在MySQL中我有3個表名爲「產品」,「PRODUCT_GROUP」和「PRODUCT_CATEGORY」MySQL查詢加盟值
產品可以通過「PRODUCT_GROUP」表中彼此相關。
產品可以通過「product_category」表格顯示在特定類別中。
我想要做的是從特定類別中檢索所有產品,這些產品要麼有價格,要麼包含一個或多個有價格的子產品。
這裏的表的一個示例:
product
=======
product_id price
1 10.00
2 20.00
3 0.00
4 40.00
5 50.00
6 0.00
7 0.00
8 0.00
9 0.00
10 0.00
11 1.99
product_group
=============
product_id child_product_id
6 1
6 2
7 3
7 4
8 9
product_category
================
category_id product_id
1 5
1 6
1 7
1 8
1 10
2 11
這意味着產品1和2是產品的兒童6.產品3和4是產品的兒童7.產品9是產品8的子級。
產品5,6,7,8和10是在類別1
我要的是一個查詢返回所有產品類別1中,要麼有一個價格,或者包含具有一個或多個孩子一個價格。所以我期望得到產品5,6,7。儘管產品8和10都屬於第1類,但我不想要這些產品,因爲它們沒有價格,並且不包含有價格的兒童。
我可以使用內部和左連接的組合來發布我迄今爲止編寫的查詢,但我擔心它完全錯誤。
謝謝你的期待。
*編輯*
我發現我原來的查詢做的工作,我得到了數據在我的兩個列混合起來的。這裏是我的下面原始查詢:
SELECT p.product_id
FROM product p
JOIN product_category c
ON c.product_id = p.product_id
AND c.category_id = 1
LEFT
JOIN product_group g
ON p.product_id = g.product_id
LEFT
JOIN product AS p2
ON p2.product_id = g.child_product_id
AND p2.price > 0
WHERE p.price > 0 OR p2.product_id IS NOT NULL
GROUP BY p.product_id
我會說繼續併發布你寫的查詢。誰在乎它是否錯誤?這就是你來這裏的原因,對吧? – Aaron