2013-03-23 37 views
-1

我有三個A,B,C表。我怎樣才能讓B和A一起加入B,並且同時又加入B?

我該如何離開A與B的連接,並且還一次將C連接到B?

例如,如果我有這些表:訂單,產品,用戶,我想是這樣的查詢:

SELECT Product.title, User.username, Order.id 
FROM Order 
/* relations: */ 
Order LEFT JOIN Product 
Product RIGHT JOIN User 
/* with this condition: */ 
ON Order.ProductID = Product.ID 
ON Product.UserID = User.ID 
+1

那麼你的預期結果是什麼?是'A'所有_all_行和'C'所有_all_行,只有'B'中的那些行與_either_'A'或'C'相關? – 2013-03-23 01:57:25

+0

當'UserOD'與'Order'沒有關係時,沒有'Product'中介,我沒有看到正確連接對'C'的目的。 – 2013-03-23 01:58:53

+0

它不會傷害你的問題描述涉及的表格和預期的結果。因此我們可以爲您的問題找到更準確的解決方案。 關於連接,爲你簡短閱讀[here](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) – 2013-03-23 02:31:44

回答

4

我不完全知道你是問什麼,而是讓你上面的語法正常工作,試試這個:

SELECT Product.title, User.username, Order.id 
FROM Order 
    LEFT JOIN Product 
     ON Order.ProductID = Product.ID 
    RIGHT JOIN User 
     ON Product.UserID = User.ID 

根據您想要的結果,我更喜歡使用LEFT JOINs的可讀性 - 所以,如果你希望所有用戶,無論他們是否在產品表或順序表,那麼這將工作:

SELECT U.username, P.title, O.id 
FROM User U 
    LEFT JOIN Product P 
     ON P.UserId = U.Id 
    LEFT JOIN Order O 
     ON O.ProductID = P.ID 
相關問題