我正在寻找不止一次加入表的方法…假设我得到了一个包含3列的表,其中2列是引用其他表的外键,例如,我得到了表,比如customers with fieldsidfirstnamelastname。然后我有第二个表,比如带有字段idreg_noowner的cars……最后是第三个表'assignment',现在带有外键,例如-iddriver_assigned(FK引用客户),who_assigned(FK引用客户),car(FK引用汽车)。
我可以使用什么SQL语法来连接?目前我使用查询。。。

SELECT
  a.firstname || ' ' || a.middlename AS Conductor,
  b.date_added AS Date_Assigned,
  a.firstname || ' ' || a.middlename AS Assigned_By
FROM customers a
JOIN ndovu_matatu_conductors b
ON a.customer_id=b.customer_id

我得到了下面的数据,但是现在导体和按列分配的不应该有相同的值。。。
conductor   date_assigned   assigned_by
Dennis      2014-09-24      Dennis
Dennis      2014-09-24      Dennis
Davies      2014-09-24      Davies
Dennis      2014-09-25      Dennis
Jairus      2014-09-26      Jairus
Jairus      2014-09-26      Jairus

最佳答案

您对这些表的描述与查询中使用的表不匹配,但无论如何,您希望将customers表联接两次,一次用于指定的driver,一次用于指定的who。(或任何正确的列)
类似这样(基于表格说明):

select
    c1.firstname || ' ' || c1.middlename AS Driver_assigned,
    c2.firstname || ' ' || c2.middlename AS Who_assigned,
from assignments a
join customers c1 on a.driver_assigned=c1.customer_id
join customers c2 on a.who_assigned=c2.customer_id

我希望您理解这个概念,即使列/表可能是错误的。

关于sql - Postgres在一张 table 上多次执行JOIN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26057758/

10-11 03:32
查看更多