2012-07-20 44 views
0

我試圖建立一個查詢4頁不同的表:兩種方式加入MySQL的

  • Users_Licences
  • 許可證
  • 產品
  • 請求

Users有多個Licences,存儲在Users_LicencesProducts有多個Requests和在Request表中您有目標許可證在Products表中您有source_licence

我想列出具有指定用戶在其Users_Licences表中具有目標許可證和源許可證(通過Products)的所有請求。

複雜但是這是我在這一點上(不工作):

SELECT 
    Request.id AS offer_id, Request.product_id, 
    Request.licence_id AS target_licence_id, 
    Request.trans_price, Products.source_licence_id  
FROM 
    Request  
JOIN 
    Products ON Request.product_id = Products.id  
JOIN 
    Licences ON Products.source_licence_id = Licences.id  
JOIN 
    Licences ON Request.licence_id = Licences.id  
JOIN 
    Users_Licences ON Licences.id = Users_Licences.licence_id  
WHERE 
    Users_Licences.user_id = '$user_id'  
GROUP BY 
    Request.id  
ORDER BY 
    Request.trans_price DESC 

你能幫助我嗎?如果我刪除行

JOIN Licences ON Products.source_licence_id = Licences.id 

它的工作原理,但我有我的結果的一部分...謝謝!

+0

你嘗試過'左join'? – cybertextron 2012-07-20 13:42:12

回答

1

你需要wheh您使用表來使用不同的別名多時間

SELECT Request.id AS offer_id, Request.product_id, Request.licence_id AS target_licence_id, Request.trans_price 
, Products.source_licence_id  
FROM Request  
JOIN Products ON Request.product_id = Products.id  
JOIN Licences as l1 ON Products.source_licence_id = l1.id  
JOIN Licences as l2 ON Request.licence_id = l2.id  
JOIN Users_Licences ON l2.id = Users_Licences.licence_id  
WHERE Users_Licences.user_id='$user_id'  
GROUP BY Request.id  
ORDER BY Request.trans_price DESC 
+0

非常好!我忘了那個...你提供的代碼不能直接使用,我也必須爲Users_Licences使用別名。但是非常感謝。 – BoDeX 2012-07-21 11:44:20