АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
⊗ppPmDOGD 382 of 447 menu

Атрыманне дадзеных з звязаных табліц у 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

Практычныя задачы

Няхай у вас ёсць табліца з таварамі і табліца з іх катэгорыямі. Напішыце запыт, які дастане назвы тавараў разам з іх катэгорыямі.

byenru