首先讓我描述一些背景。我們有一個包含我們所有產品的表格,以及一個包含「產品標籤」(材料/尺寸/類型)列表的表格和一個包含分配給產品的標籤列表的表格('tag_id'= > 1(材料),「值」 =>「黃金」,「產物」 => 123)如何在MySQL中執行多個LEFT JOIN?
我試圖使用類似於此的查詢來濾除某些產品,但它不似乎不工作。任何人都能向正確的方向提供一些指引嗎?
SELECT DISTINCT `products`.* FROM `products`,`product_assigned_tags`
LEFT JOIN `product_assigned_tags` AS tags_0 ON tags_0.`tag_id` = 1
LEFT JOIN `product_assigned_tags` AS tags_1 ON tags_1.`tag_id` = 2
WHERE (
((tags_0.`value` = 'silver') AND (tags_0.`value` != 'gold')) AND
((tags_1.`value` = 'small') AND (tags_1.`value` != 'large'))
) AND (`products`.`type` = '2' OR `products`.`type` = '1') LIMIT 0, 30
你的隱無效組合內連接和左連接。請發佈您的表格結構以及您希望查詢的數據樣本,以幫助我們瞭解您所追求的內容。 –
最好顯示您的預期輸出。 +1 @MichaelBerkowski – bonCodigo
@Michael:實際上,OP查詢中沒有任何實際的LEFT連接。 WHERE子句中的謂詞否定了「左連接」的任何「外部」性質,使它們等同於「內連接」。那第一個連接實際上是一個CROSS連接。 – spencer7593