【发布时间】:2018-11-22 05:21:50
【问题描述】:
类别表的结构:
- 身份证
- 标题
- parent_id
Item 表的结构:
- 身份证
- 标题
- is_active (0 или 1)
- category_id
表格通过一对多的关系与 category_id 字段相关联。那些。 1 个类别可以有多个项目。
类别表中的两级层次结构。这定义了主要类别和子类别。类别是 parent_id = NULL 的那些记录。以及子类别,这些是其中 parent_id = 到某个 id 的那些记录。
一个项目既可以属于主类别(其中 parent_id = null),也可以属于子类别(子类别)。项目可以是活动的,也可以是非活动的(0 或 1)。
您需要进行查询并从 Category 表中选择所有具有活动项目 (is_active = 1) 的主要类别(其 parent_id = null),并且其子类别也具有活动项目。 即如果子子类别有 is_active = 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
但是子类已经不能应付了,请告诉我谁有更多的经验。
【问题讨论】:
-
你试过什么?考虑使用
join和exists。 -
学校作业?
-
预期的结果会有所帮助,最好自己尝试一下。
-
我想不出在 1 个查询中执行此操作的方法。我只需要选择主要类别,其中只有活动项目。
-
您在这方面的目标不是很明确。试着在最后的陈述中澄清你想要达到的目标。还请先向我们展示您的想法,以便我们为您指明方向,而不是替您做。
标签: mysql sql select categories