使用其他表中的值显示字段值

Display field value with value from other tables

我在 table trades 中有两列引用另一个 table customers 中的 auto_id 列。

我想为两列显示对应于 table 中每个 auto_id 的客户姓名 customers.customer_name

在table交易中,customer1_idcustomer2_id都是指向tablecustomers中同一个主键的外键,即auto_id.

示例:

table customers:

|  auto_id  | customer_name |
|    150    |    jake       |
|    159    |    homer      |

table trades:

| customer1_id | customer2_id |  status  |
|    150       |      159     |  traded  |
|    150       |      160     |   null   |
|    152       |      240     |  traded  |

预期结果(在 select 或视图中):

| customer1_id | customer2_id |  status  |
|   jake       |     homer    |  traded  |

我真正想要实现的目标是:显示 jake 与 customer2_id 进行交易的所有交易,并在结果中显示客户 2 的真实姓名(如果可能,不是 auto_id,但是至少它的真实姓名)。

我只设法显示一个带有连接的 customerX_id 列(不是替换 id,而是将其添加到最终输出的右侧),但我找不到同时拥有两者的方法。

select p.customer1_id, p.customer2_id, b.auto_id, b.customer_name
from trades as p
inner join customers as b on b.auto_id = p.customer1_id;

这给出了

| customer1_id | customer2_id |  status  | auto_id | customer_name |
|   150        |     159      |  traded  |   150   |   jake        |

我只需要在某处显示 homer。

如果您的问题是获取第二个客户的姓名,那么您需要做的就是添加第二个连接:

select p.customer1_id, p.customer2_id, c1.auto_id, c1.customer_name, c2.auto_id, c2.customer_name
from trades as p
inner join customers as c1 on c1.auto_id = p.customer1_id
inner join customers as c2 on c2.auto_id = p.customer2_id