Дар PHP аз ҷадвалҳои пайвастшуда маълумот гирифтан
Биёед як дархост созем, ки ҳамаи корбаронро бо шаҳрҳои онҳо мегирад. Барои ин ба мо фармони LEFT JOIN лозим аст:
Синтаксиси он ба тариқи зерин мебошад:
SELECT майдонҳо FROM номи_ҷадвал
LEFT JOIN номи_ҷадвали_пайвастшуда ON шарти_пайваст
WHERE шарти_интихоб
Биёед қисмҳои алоҳидаи синтаксиси ин фармонро таҳлил кунем.
Майдонҳо
Аз он ҷое ки интихоб аз чанд ҷадвал сурат мегирад, интихоби ҳамаи майдонҳо тавассути * кор нахоҳад кард. Дархости зерин фақат майдонҳоро аз ҷадвали асосӣ интихоб мекунад, на аз ҷадвали пайвастшуда:
SELECT *
Барои он ки маълумот аз ҳама ҷадвалҳо интихоб шавад, пеш аз * бояд номи ҷадвалеро барои интихоб муайян кард:
SELECT users.*, cities.*
Ё шумо метавонед майдонҳои заруриро бо муайян кардани номи ҷадвал пеш аз онҳо номбар кунед:
SELECT users.name, cities.name
Ин ду равиш мушкилӣ доранд. Масъала ин аст, ки агар майдонҳо дар ҷадвалҳо номҳои якхела дошта бошанд, дар массиви PHP зиддияти номҳо рух медиҳад ва фақат як майдон ғолиб меояд ва дуюмаш вуҷуд надорад.
Барои ҳалли мушкилӣ бояд номҳои зиддиятро тавассути фармони 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
Вазифаҳои амалӣ
Фарз мекунем, ки шумо ҷадвали маҳсулот ва ҷадвали категорияҳои онҳоро доред. Як дархост нависед, ки номҳои маҳсулотро бо категорияҳои онҳо мегирад.