我正在寻找一种不止一次连接表的方法...假设我有一个包含 3 列的表,其中 2 列是引用其他表的外键,例如我有表,说客户有字段 id
、firstname
、lastname
。然后我有第二张表,比如带有字段 id
、reg_no
、owner
的汽车……最后现在有第三张表“assignments”带有外键,例如 - id
、driver_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 和 assigned_by 列不应该有相同的值...
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
最佳答案
您对表的描述与查询中使用的表不匹配,但无论如何您想要连接客户表两次,一次用于 driver_assigned,一次用于 who_assigned。 (或者任何正确的列。)
类似这样的事情(基于表格描述):
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 在一个表上多次执行 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057758/