我怎样才能正确地执行此 SQL 查询?

How can I do this SQL query correctly?

我有一个 SQL table 有 3 个字段,都是 ID,都是外键,但是,前两个字段引用另一个 [=21= 中的同一个字段].我需要用 3 个 ID 显示这个 table,但我想显示与这些 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

在下一种方法中,您可以 select 来自 country_comm table 的所有行并加入字典 table 以将 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
;