Дар 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
Масъалаҳои амалӣ
Фарз мекунем, ки шумо ҷадвали маҳсулот ва ҷадвали категорияҳои онҳоро доред. Дархостеро нависед, ки номҳои маҳсулотро бо категорияҳои онҳо мегирад.