Python'до байланышкан таблицалардан маалымат алуу

Бардык колдонуучуларды шаарлары менен чогултуп алуучу суроо жасайлы. Бул үчүн LEFT JOIN командасы керек болот:

Анын синтаксиси төмөнкүдөй көрүнөт:

sqlSELECT талаалар FROM таблицанын_аты
  LEFT JOIN байланышкан_таблицанын_аты ON байланыш_шарты
WHERE тандап_алуу_шарты

Келгиле, бул команданын синтаксисиндин бөлүктөрүн кезиктирели.

Талаалар

Тандоо бир нече таблицадан жүргөндүктөн, * аркылуу бардык талааларды тандоо иштей албайт. Төмөнкү суроо негизги таблицадан гана талааларды тандап алат, бирок байланышкан таблицадан эмес:

sqlSELECT *

Бардык таблицалардан маалымат тандалып алынуу үчүн, * ден мурун тандалуучу таблицанын атын көрсөтүү керек:

sqlSELECT users.*, cities.*

Же болбосо, бизге керек болгон талааларды алардын алдында таблицанын атын көрсөтүп тизмелей алабыз:

sqlSELECT users.name, cities.name

Бул эки ыкманын көйгөйү бар. Маселени, эгерде таблицалардагы талаалар бирдей аттарга ээ болсо, анда Python массивинде аттар кагылышат жана бир гана талаа жеңип чыгат, экинчиси болбой калат.

Көйгөйдү чечүү үчүн кагылышкан аттарды as командасы аркылуу өзгөртүп коюу керек:

sqlSELECT users.name, cities.name as city_name

Байланыш

ON командасынан кийин биз эки таблицанын ортосундагы байланыш ишке ашырылуучу талааларды көрсөтүшүбүз керек. Биздин учурда бул шаарлар таблицасындагы id талаасы жана колдонуучулар таблицасындагы city_id талаасы болот:

sqlON cities.id=users.city_id

Суроо

Натыйжада, колдонуучуларды шаарлары менен чогултуп алуучу суроо төмөнкүдөй көрүнөт:

sqlSELECT
  users.name, cities.name as city_name
FROM
  users
LEFT JOIN cities ON cities.id=users.city_id

Практикалык тапшырмалар

Задание 1

Сизде товарлар таблицасы жана алардын категорияларынын таблицасы бар деп коёлу. Товарлардын аталыштарын категориялары менен чогултуп алуучу суроо жазыңыз.