在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