Python'до байланышкан таблицалардан маалымат алуу
Бардык колдонуучуларды шаарлары менен чогултуп алуучу суроо жасайлы. Бул үчүн
LEFT
JOIN командасы керек болот:
Анын синтаксиси төмөнкүдөй көрүнөт:
SELECT талаалар FROM таблицанын_аты
LEFT JOIN байланышкан_таблицанын_аты ON байланыш_шарты
WHERE тандап_алуу_шарты
Келгиле, бул команданын синтаксисиндин бөлүктөрүн кезиктирели.
Талаалар
Тандоо бир нече таблицадан жүргөндүктөн,
* аркылуу бардык талааларды тандоо
иштей албайт. Төмөнкү суроо негизги таблицадан
гана талааларды тандап алат, бирок байланышкан
таблицадан эмес:
SELECT *
Бардык таблицалардан маалымат тандалып алынуу
үчүн, * ден мурун тандалуучу таблицанын
атын көрсөтүү керек:
SELECT users.*, cities.*
Же болбосо, бизге керек болгон талааларды алардын алдында таблицанын атын көрсөтүп тизмелей алабыз:
SELECT users.name, cities.name
Бул эки ыкманын көйгөйү бар. Маселени, эгерде таблицалардагы талаалар бирдей аттарга ээ болсо, анда Python массивинде аттар кагылышат жана бир гана талаа жеңип чыгат, экинчиси болбой калат.
Көйгөйдү чечүү үчүн кагылышкан аттарды
as командасы аркылуу өзгөртүп коюу
керек:
SELECT users.name, cities.name as city_name
Байланыш
ON командасынан кийин биз эки
таблицанын ортосундагы байланыш ишке
ашырылуучу талааларды көрсөтүшүбүз керек.
Биздин учурда бул шаарлар таблицасындагы
id талаасы жана колдонуучулар
таблицасындагы city_id талаасы
болот:
ON cities.id=users.city_id
Суроо
Натыйжада, колдонуучуларды шаарлары менен чогултуп алуучу суроо төмөнкүдөй көрүнөт:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Практикалык тапшырмалар
Сизде товарлар таблицасы жана алардын категорияларынын таблицасы бар деп коёлу. Товарлардын аталыштарын категориялары менен чогултуп алуучу суроо жазыңыз.