sql - Postgres 在一个表上多次执行 JOIN

标签 sql postgresql

我正在寻找一种不止一次连接表的方法...假设我有一个包含 3 列的表,其中 2 列是引用其他表的外键,例如我有表,说客户有字段 idfirstnamelastname。然后我有第二张表,比如带有字段 idreg_noowner 的汽车……最后现在有第三张表“assignments”带有外键,例如 - 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 和 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/

相关文章:

sql - 将 SQL 查找表与数据表联接

c# - 将 mysql.data 引用添加到 VS2010

sql - 如何在oracle数据库表中插入n-1列值

java - 如何使用 PreparedStatement 从 Java 应用程序将 POINT 类型值插入到 Postgresql 数据库中

django - MigrationSchemaMissing(无法创建 django_migrations 表(%s)% exc)

ruby-on-rails - activerecord PostgreSQLAdapter override sql_for_insert, query, execute 和 update_sql

sql - PostgreSQL 数据库 - 仅在记录不存在时插入

SQL查询检查多列的多个值

sql - 将数据(直接查询模式)从 Databricks SQL 查询引入 Power BI

postgresql - 如何插入带有 id(自动递增)PostgREST 的记录?