当前位置: 首页 > 知识库问答 >
问题:

从包含类别和子类别的表中进行选择的SQL查询

况景龙
2023-03-14

类别表的结构:

  • id
  • 标题
  • 家长id

项目表的结构:

  • id
  • 标题
  • is_active(0)
  • category_id

表结构

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

类别表中的两级层次结构。这定义了主要类别和子类别。类别是那些父项id=NULL的记录。和子类别,这些记录中的父项_id=到某个id。

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

您需要进行查询,并从Category表中选择所有具有活动项(is_active=1)且子类别也具有活动项的主类别(其父类别的id=null)。i、 e如果子类别中的项目处于活动状态=0,则不显示此类别。

我只能选择只包含活动项目的主要类别:

SELECT categories.title, count(analyses.id) FROM items
            INNER JOIN categories on items.category_id = categories.id
            WHERE categories.parent_id IS NULL
            AND categories.is_active = 1
            GROUP BY analyses.category_id
            ORDER BY analyses_categories.title

但与子类别不能应付了,请告诉我谁有更多的经验。

共有1个答案

伯英武
2023-03-14

有点不清楚您试图计数的是什么(只是与父项关联的活动项?),但我会使用exists找出哪些孩子也有活动项目:

select c.title, count(*)
from categories c
    join item i on i.category_id = c.id 
where c.parent_id is null and i.is_active = 1 and exists (
    select 1
    from categories c2
        join item i on c2.id = i.category_id
    where c2.parent_id = c.id and i.is_active = 1
)
group by c.title
 类似资料:
  • 我目前有一个代码片段,其中对于每个类别,它将找到子类别: 将递归获取一个类别的子级: 目前,使用,只检索子类别的子类别,因此如果每个子类别都有自己的子类别,则不会将其保存到子类别中。 我如何显示子子类别给我们的子类别? 我想用我的代码做的是获取一个父级,获取它的子级,然后将这些子级中的每一个视为父级,递归地获取它的子级,但是我的JSON输出并没有反映这一点。只有父对象有子对象-子对象没有子对象(尽

  • 我有一张这样的桌子 https://i.stack.imgur.com/ON3JL.png 这是此表的实体类 我正在使用spring rest和spring数据(jpaRepositories)构建RESTful API, 我希望在将控制器中的主要类别打印为JSON响应时,我希望它们也有一个子类别列表 到这个

  • 我是编程新手,目前正在尝试将主类别子类别显示为树。 已创建包含类别的菜单。现在,当我单击主类别名称时,我希望加载分配给该主类别的所有子类别中的所有产品。问题是我不明白如何构造我的查询。 在我的表类别中,我存储了主猫和子猫。当我向一些主类别添加子类别时,我将主类别ID存储在父类别ID列下。 示例 产品表有列 因此,当我点击maincatID=1时,它应该会显示id为1和2的产品,因为它们被分配给

  • 我有两个表的项目和类别。类别表是自联接表。 项目表具有以下列ID、项目名称、类别ID Categories表包含以下列CATID、category\u name、parent\u ID 我需要选择在一个类别和这个主类别的子类别下列出但不起作用的项目。这里是mysql,它只返回sub。

  • 问题内容: 我想在选择 列表(下拉列表)中显示类别,子类别和子子类别,就像WordPress在其管理面板中显示的方式一样。 首先看一下我的数据库表(tb_categories)- 数据库表 我想要以下HTML格式的输出- 输出 两项“无”和“未分类”在代码中进行了硬编码。我 想知道如何 使用选择列表选项以层次结构顺序显示类别及其子类别。 我正在尝试使用自我连接的以下sql查询。这 是- And t

  • 问题内容: 我正在编写类似于博客软件的Web应用程序。有以下三个表 我很难概念化SQL查询,该查询将返回在给定集中具有“所有”标签的帖子。 问题答案: 这是关系划分。 使用和或加倍。 第一种方法的一个例子是。