繁体   English   中英

如何正确执行此 SQL 查询?

[英]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

据推测,每个productcountry_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.

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