从items表中进行选择的sql查询,items表连接到category表

piok6c0g  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(383)

我有分类表的结构:
身份证件
标题
\u是否处于活动状态(0或1)
父项id
项目表的结构:
身份证件
标题
\u是否处于活动状态(0或1)
类别\u id

表通过一对多关系与category\u id字段相关联。那些。1个类别可以有多个项目。
类别表中的两级层次结构。这定义了主要类别和子类别。类别是那些父项id=null的记录。以及子类别,这些记录中的父项=某个id。
一个项目可以同时属于主类别(其中父类别id=null)和子类别(子类别)。项可以是活动的,也可以是非活动的(0或1)。类别和子类别也可以是活动的,也可以是非活动的。
请告诉我。我无法查询以选择项目。我需要从items表中选择状态为\u active=1的项目,这些项目是:1)加入到主类别中,主类别的状态为\u active=1。2) 最困难的是:这些项目被连接到一个子类别,其状态为\u active=1,该子类别的父类别的状态为\u active=1。这实际上是用sql完成的吗?我使用查询

SELECT * FROM item LEFT JOIN categories 
ON item.category_id = categories.id
    WHERE item.is_active = 1 AND categories.is_active = 1 AND categories.parent_id IN 
    (SELECT id FROM categories WHERE parent_id IS NULL AND is_active = 1)

但它返回一个空结果给我

yc0p9oo0

yc0p9oo01#

SELECT item.* FROM 
item INNER JOIN categories ON item.category_id = categories.id
WHERE item.is_active = 1 AND (categories.is_active = 1 AND categories.parent_id IN 
    (SELECT id FROM categories WHERE parent_id IS NULL AND is_active = 1)) OR ( item.is_active = 1 AND categories.parent_id IS NULL AND categories.is_active = 1 )

相关问题