2009-10-27 113 views
1

我需要創建一個記錄集,它從另一個表的一行上的一個表中連接3行。在另一個表中連接3行到1行在另一個表中

目前我有:

SELECT * 
    FROM tb_product_sub_cat 
LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory 
    WHERE tb_product_sub_cat.category_name = %s 

我還需要:

tb_product_sub_cat.category_id = tb_products.product_subcategory2 AND 
tb_product_sub_cat.category_id = tb_products.product_subcategory3 

我需要找到一個有「東西」在/或所有產品類別中的所有產品。

+1

什麼DBMS您使用的? – Tmdean 2009-10-27 04:57:21

回答

2

不完全你想聽到清晰的是什麼,但是這看起來像工會工作: -

SELECT * FROM tb_product_sub_cat LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory WHERE tb_product_sub_cat.category_name = %s 
UNION 
SELECT * FROM tb_product_sub_cat LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory2 WHERE tb_product_sub_cat.category_name = %s 
UNION 
SELECT * FROM tb_product_sub_cat LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory3 WHERE tb_product_sub_cat.category_name = %s 
+0

謝謝詹姆斯 - 非常感謝! – Warren 2009-10-27 06:24:47

3
SELECT * FROM tb_product_sub_cat 
INNER JOIN tb_products 
ON tb_product_sub_cat.category_id = tb_products.product_subcategory2 
AND tb_product_sub_cat.category_id = tb_products.product_subcategory3 
AND tb_product_sub_cat.category_id = tb_products.product_subcategory 
WHERE tb_product_sub_cat.category_name = %s 

這是我對你的情況的解釋。讓我知道這是否適合你,或者如果你需要闡述。

編輯

SELECT * FROM tb_product_sub_cat 
LEFT JOIN tb_products 
ON tb_product_sub_cat.category_id = tb_products.product_subcategory2 
AND tb_product_sub_cat.category_id = tb_products.product_subcategory3 
AND tb_product_sub_cat.category_id = tb_products.product_subcategory 
WHERE tb_product_sub_cat.category_name = %s 
+0

你的JOIN應該是一個LEFT JOIN - 附加條件並不一定意味着總會有支持記錄。 – 2009-10-27 05:32:55

+0

嗨Xencor,謝謝你的回覆。 我試過這個SQL,不幸的是沒有返回任何結果。 我有一個產品子類別(包含一個ID和名稱前,1 =揹包,2 =袋)表和產品表product_subcategory,product_subcategory2和product_subcategory3。 我有一個產品最多可以有3個product_subcategories。 我需要查找所有產品類別中包含「材料」的所有產品。 :)再次感謝 – Warren 2009-10-27 05:42:29

+0

@Warren Pls。按照rexem的建議看到編輯...讓我知道你是否適合你的作品 – 2009-10-27 06:43:13

1

表的別名將讓您的生活更輕鬆:

SELECT * 
    FROM tb_product_sub_cat t 
LEFT JOIN tb_products tp ON t.category_id IN (tp.product_subcategory, tp.product_subcategory2, tp.product_subcategory3) 
    WHERE t.category_name = %s 
+0

謝謝Rexem - 非常感謝! – Warren 2009-10-27 06:21:35

相關問題