2014-09-03 47 views
1

這也許一個簡單的問題解決很抱歉。2的SQL Server內部聯接SELECT語句

我有一個SQL SELECT語句,我有2列,都是外鍵相同的表。這裏有一個例子:

的ProductID = 5 |賣家(UserID)= 3 |買方(用戶名)= 2

我想select語句返回

產品= 5 |賣家(UserID)=加里瓊斯|買方(用戶名)=約翰·史密斯

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 |賣家(UserID)=加里瓊斯|買方(UserID)=空

+0

改變你的第二個'內Join'到'左Join' – Siyual 2014-09-03 22:25:13

+0

2的變化... LEFT JOIN的表,返回空值(內將下降的記錄),你將需要兩個連接兩個用戶,一個買方和一個賣方(除非他們總是同一個人?)。在訂單表中有沒有來自賣家ID的買家ID? – Twelfth 2014-09-03 22:25:49

+0

@Twelfth它們是同一個表中的獨立字段,它們都鏈接到users表中的相同字段。我如何做2個連接? – Chris 2014-09-03 22:28:16

回答

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,它是那些你應該加入用戶表的人。在示例查詢中,我使用了BuyerID和SellerID,您必須更改以反映正確的名稱。

+0

謝謝,非常感謝:) – Chris 2014-09-03 22:35:48

1

假設您在訂單表上有買方和賣方ID列,並且它們是用戶表的外鍵 - 我分別命名爲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 
+0

謝謝,非常感謝:) – Chris 2014-09-03 22:36:31

+0

@ user3279193沒問題,很高興幫助。 – Donal 2014-09-03 22:36:49