连接后,表中的两行在另一个表中显示为两个不同的列
Posted
技术标签:
【中文标题】连接后,表中的两行在另一个表中显示为两个不同的列【英文标题】:Two rows from a table show as two different columns in another table after join 【发布时间】:2020-04-29 22:18:12 【问题描述】:我有如下表格:
表 A
tableA_key BillToCustId SoldToCustId
123 C1 C2
餐桌定制
ID Name Type
C1 ABC Bill To
C2 XYZ Sold To
当我将 Cust 表与表 A 连接并在查询中添加列时,我希望解决方案如下所示:
表 A
tableA_key BillToCustId BillToName SoldToCustId SoldToName
123 C1 ABC C2 XYZ
我得到了什么:
tableA_key BillToCustId BillToName SoldToCustId SoldToName
123 C1 (null) C2 (null)
问题是 Cust 表中的两行如何成为表 A 中的列?
【问题讨论】:
【参考方案1】:您可以加入两次:
select
a.tablea_key,
a.billToCustId,
c1.name billToName,
a.soldToCustId,
c2.name soldToName
from tablea a
inner join cust c1 on c1.id = a.billToCustId
inner join cust c2 on c2.id = a.soldToCustId
您可能还需要cust(type)
的加入条件,例如:
select
a.tablea_key,
a.billToCustId,
c1.name billToName,
a.soldToCustId,
c2.name soldToName
from tablea a
inner join cust c1 on c1.id = a.billToCustId and c1.type = 'Bill To'
inner join cust c2 on c2.id = a.soldToCustId and c1.type = 'Sold To'
【讨论】:
以上是关于连接后,表中的两行在另一个表中显示为两个不同的列的主要内容,如果未能解决你的问题,请参考以下文章
即使不是一个表中的所有行在另一个表中都有核心响应者,如何从 MySQL 中的两个表中进行选择?