繁体   English   中英

如何多次联接一个表?

[英]How to join a table multiple times?

我正在尝试实现此结果,“地方”表包含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地点:名称,类型(“ state”,“ city”,“ slaughter”)

我认为您想要多个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不匹配也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM