3

我确信 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(如果适用)以及类别 ID。

这是否可以通过单个查询实现,如果可以,我该如何编写?

4

1 回答 1

0

我不认为这是IFMySQL 中的情况(您可以这样做),子查询或更复杂的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`
    )

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

于 2013-07-15T18:13:23.633 回答