PHPда богланган jадваллардан маълумот олиш
Келгила, барча фойдаланувчиларни шахарлари билан бирга оладиган
сўров ясайлик. Бунинг учун бизга LEFT
JOIN командаси керак бўлади:
Унинг синтаксиси quyidagicha кўринишади:
SELECT майдонлар FROM jадвал_номи
LEFT JOIN богланган_jадвал_номи ON богланиш_шарти
WHERE танлаб_олиш_шарти
Келгила, ushbu команда синтаксисининг алохида қисмларини tushunib olaylik.
Майдонлар
Нечата jадвалдан маълумот олингани sababli,
* орқали барча майдонларни олиш
ишламaydi. Quyidagi сўров факат asosiy jадвалning
майдонларини tanlaydi, богланган jадвалникини emas:
SELECT *
Барча jадваллардан маълумот olish учун,
* oldidan jадвал номини кўрсатиш керак:
SELECT users.*, cities.*
Ёки керакли майдонларни уларнинг олдига jадвал номини кўрсатиб рўйхатлаш мумкин:
SELECT users.name, cities.name
Бу икки usulda muammо бор. Гap икки jадвалдаги майдон номлари бир хил бўлса, PHP массивида номлар toʻqnashadi ва факат битта майдон қолади, иккинчиси бўлмайди.
Бу muammoni ҳал қилиш учун toʻqnashayotgan номларни
as командаси орқали ўзгартириш керак:
SELECT users.name, cities.name as city_name
Богланиш
ON командасидан кейин биз икки jадвал oртaсидаги
богланишни аникловчи майдонларни кўрсатишимиз керак.
Бизнинг ҳолимизда бу шахарлар jадвалидаги id
майдони ва фойдаланувчилар jадвалидаги city_id
майдони бўлади:
ON cities.id=users.city_id
Сўров
Натижада, фойдаланувчиларни шахарлари билан бирга олувчи сўров quyidagicha кўринишади:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Амалий вазифалар
Фарз қилайлик, сизда товарлар jадвали ва уларнинг туркумлари jадвали бор. Товар номларини уларнинг туркумлари билан бирга олadigan сўров язинг.