[英]How can I do this SQL query correctly?
我有一个 SQL 表,它有 3 个字段,都是 id,都是外键,但是,前两个字段引用了另一个表中的相同字段。 我需要用 3 个 id 显示这个表,但我想显示与这些 id 对应的名称,这是我到目前为止的查询:
SELECT A.name as C1, B.name as C2, P1.name as PN
FROM country A
JOIN country_comm CC1 ON A.id=CC1.exporter_id
JOIN product P1 ON CC1.product_id=P1.id
JOIN country B JOIN country_comm CC2 ON B.id=CC2.importer_id
JOIN product P2 ON CC2.product_id=P2.id
当然我得到的结果不是我想要的,这就是我得到的:
C1 |C2 |P1
Brazil |Argentina|Copper
Brazil |Argentina|Iron
Albania|Argentina|Stone
Brazil |Germany |Copper
Brazil |Germany |Iron
Albania|Germany |Stone
Brazil |Argentina|Copper
Brazil |Argentina|Iron
Albania|Argentina|Stone
这就是我要的:
C1 |C2 |P1
Brazil |Argentina|Copper
Brazil |Germany |Iron
Albania|Argentina|Stone
据推测,每个product
在country_comm
有一行,有两列引用 table country
。 如果是这样,您可以将查询表述为:
select c1.name as importer_country, c2.name as exporter_country, p.name as product_name
from product p
inner join country_comm cc on cc.product_id = p.id
inner join country c1 on c1.id = cc.importer_id
inner join country c2 on c2.id = cc.exporter_id
在下一个方法中,您可以从country_comm
表中选择所有行并连接字典表以将 id 转换为名称,例如:
select
importer.name as importer_country,
exporter.name as exporter_country,
product.name as product_name
from country_comm cc
join product on product.id = cc.product_id
join country importer on importer.id = cc.importer_id
join country exporter on exporter.id = cc.exporter_id
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.