【发布时间】:2014-10-28 13:24:44
【问题描述】:
这可能是一个简单的问题,很抱歉。
我有一个 SQL 选择语句,我有 2 列,它们都是同一个表的外键。这是一个例子:
产品 ID = 5 |卖家(用户 ID)= 3 |买家(用户 ID)= 2
我希望选择语句返回
产品 = 5 |卖家(用户 ID)= 加里琼斯 |买家(用户 ID)= 约翰·史密斯
Select Product.ID
User.ID as Seller
User.ID as Buyer
From Orders
Inner Join Product on Product.ID = Orders.ProductID
Inner Join User on User.ID = Orders.UserID --(For both buyer and seller)
买家可能不是用户,因此如果没有用户,则应留空:
产品 = 5 |卖家(用户 ID)= 加里琼斯 |买家(用户 ID)= 空
【问题讨论】:
-
将您的第二个
Inner Join更改为Left Join -
2 更改...左连接到表以返回空值(内部将删除记录),您将需要两个连接两个用户,一个用于买方,一个用于卖方(除非它们始终是同一个人?)。您的订单表中是否有独立于卖家 ID 的买家 ID?
-
@Twelfth 它们是同一个表中的单独字段,它们都链接到用户表中的同一字段。如何进行 2 次连接?
-
是的......下面的两个答案似乎都解决了这个问题。您可以根据需要多次加入同一个表(嗯,直到这些引擎支持的逻辑最大值)
标签: sql sql-server select stored-procedures join