我确信mysql可以做到这一点,但我不知道如何编写查询。
如果我有以下表格:
Product
id name
Product Relationship
parent_id child_id
Product Category
id category_name
Product Categories
product_id category_id
每个产品都有一个允许显示的类别列表,并且只能在这些类别中显示。
现在困难的一点:如果父母>如果存在子产品关系,则每个子产品ID也必须被视为此规则的一部分,如果在某个类别中看不到任何子产品,则整个产品必须不可见。
可见性由我尝试在此处写入的查询返回的结果集中没有结果确定。
典型的输入将是产品ID,父和子ID(如果适用)和类别ID。
这是否可以通过单个查询进行,如果可以,我该怎么写呢?
答案 0 :(得分:0)
我不认为这是MySQL(which you can do)中IF
的情况,子查询或更复杂的JOIN
有什么问题。
SELECT
p.*
FROM
`Product` p
LEFT JOIN
`Product_Relationship` c
ON p.id = c.parent_id OR p.id = c.child_id
WHERE
p.id IN(
SELECT product_id FROM `Product_Categories`
)
AND (
c.id IS NULL
OR c.id IN(
SELECT product_id FROM `Product_Categories`
)
免责声明:我没有针对您的架构进行测试