如何多次加入一个表?

vqlkdk9b  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(237)

我正在尝试实现这个结果,“地点”表包含3种类型的地点(州、市、屠宰场)。我想根据“type”(枚举列)将它们显示为不同的列。
以下是我迄今为止尝试过的:

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\u id,state\u id,city\u id,slaughter\u id地点:名称,类型('state','city','slaughter')

mwngjboj

mwngjboj1#

我想你想要多个 join 学生:

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 在结果集中,即使某些ID没有匹配项。

相关问题