首页 文章

用于从items表中选择的SQL查询,该表连接到类别表

提问于
浏览
0

我有Category表的结构:

  • id

  • Headers

  • is_active(0或1)

  • parent_id

Item表的结构:

  • id

  • Headers

  • is_active(0或1)

  • category_id

table structure

表通过一对多关系与category_id字段相关联 . 那些 . 1类可以有很多项 .

“类别”表中的两级层次结构 . 这定义了主要类别和子类别 . 类别是parent_id = NULL的记录 . 子类别,这些是parent_id =某个id的记录 .

一个Item可以属于主类别(其中parent_id = null)和子类别(child) . 项目可以是活动的而不是活动的(0或1) . 类别和子类别也可以是活动的而不是活动的 .

请告诉我 . 我无法进行查询以选择项目 . 我需要从Items表中选择状态为is_active = 1的项目,它们是:1)加入主类别,has_active = 1. 2)最困难的是:项目连接到子类别status is_active = 1,其父类别的状态为is_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)

但它会给我一个空洞的结果

1 回答

  • 0
    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 )
    

相关问题