Как присоединиться к столу несколько раз? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь добиться этого результата, таблица «места» содержит 3 типа мест (штат, город, бойня).Я хочу показать их как разные столбцы на основе «типа», который является столбцом перечисления.

Вот что я пробовал до сих пор:

SELECT sifs.sif_id, places.`name` as city FROM sifs
INNER JOIN places ON sifs.city_id = places.id
union all
SELECT sifs.sif_id, places.`name` as slaughter FROM sifs
INNER JOIN places ON sifs.slaughter_id = places.id
union all
SELECT sifs.sif_id, places.`name` as state FROM sifs
INNER JOIN places ON sifs.state_id = places.id

вот результат запроса:

sif_id | city
15     | Pedro Juan Caballero(PRY)
15     | FRIGONORTE
15     | Amambay(PRY)

вот что я хочу:

sif_id | state       | city                     | slaughter
15     | Amambay(PRY)| Pedro Juan Caballero(PRY)| FRIGONORTE

поля таблиц:

sifs: sif_id, state_id, city_id, slaughter_id места: имя, тип ('штат', 'город',' убой ')

1 Ответ

0 голосов
/ 12 декабря 2018

Я думаю, вам нужно несколько join s:

SELECT s.sif_id, pc.name as city, ps.name as slaughter,
       pst.name as state
FROM sifs s LEFT JOIN
     places pc
     ON s.city_id = pc.id LEFT JOIN
     places ps
     ON s.slaughter_id = ps.id LEFT JOIN
     places pss
     ON s.state_id = pst.id;

При этом используется LEFT JOIN, поэтому все строки в sifs находятся в наборе результатов, даже если у некоторых идентификаторов нет совпадений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...