mysql if语句 - 这可能吗?

时间:2013-07-15 18:07:32

标签: mysql

我确信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。

这是否可以通过单个查询进行,如果可以,我该怎么写呢?

1 个答案:

答案 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`
    )

免责声明:我没有针对您的架构进行测试