这可能是一个很难解决的简单问题。
我有一个SQL select语句,我有2列,都是同一个表的外键。这是一个例子:
ProductID = 5 |卖方(UserID)= 3 |买方(UserID)= 2
我希望select语句返回
产品= 5 |卖方(UserID)= Gary Jones |买方(UserID)= John Smith
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)
买家可能不是用户,因此如果没有用户,则应保留为null:
产品= 5 |卖方(UserID)= Gary Jones |买方(UserID)=空
答案 0 :(得分:1)
假设您的订单表上有买家和卖家ID列,并且他们是User表的外键 - 我将它们分别命名为BuyerID和SellerID。我也对其他列名做了一些假设。
SELECT
p.ID,
P.ProductName,
u1.Name as Seller,
u2.Name as Buyer
FROM Orders o
INNER JOIN Product p ON p.ID = o.ProductID
LEFT JOIN User u1 ON u1.ID = o.SellerID
LEFT JOIN User u2 ON u2.ID = o.BuyerID
答案 1 :(得分:1)
您需要左连接来获取买方不是用户的行,并且还要加入用户表两次:
Select Product.ID
u1.ID as Seller -- this should maybe be u1.name and not id?
u2.ID as Buyer
From Orders
Inner Join Product on Product.ID = Orders.ProductID
Inner Join User u1 on u1.ID = Orders.SellerID --(For seller)
Left Join User u2 on u2.ID = Orders.BuyerID --(For buyer )
我假设你的Orders表存储买家和卖家的ID,它是那些你应该加入User表的人。在示例查询中,我使用了BuyerID和SellerID,您必须更改它以反映正确的名称。