【发布时间】:2018-11-26 05:26:27
【问题描述】:
我有类别表的结构:
- 身份证
- 标题
- is_active(0 或 1)
- parent_id
Item 表的结构:
- 身份证
- 标题
- is_active(0 或 1)
- category_id
表格通过一对多的关系与 category_id 字段相关联。那些。 1 个类别可以有多个项目。
类别表中的两级层次结构。这定义了主要类别和子类别。类别是 parent_id = NULL 的那些记录。以及子类别,这些是其中 parent_id = 到某个 id 的那些记录。
一个项目既可以属于主类别(其中 parent_id = null),也可以属于子类别(子类别)。项目可以是活动的和不活动的(0 或 1)。类别和子类别也可以是活动的和不活动的。
请告诉我。我无法查询以选择项目。 我需要从 Items 表中选择状态为 is_active = 1 的项目,它们是: 1) 加入主类别,has_active = 1。 2)最困难的是:项目加入到状态为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)
但它返回一个空结果给我
【问题讨论】:
-
你试过什么? SO 不是代码编写服务。当您遇到特定问题时,我们很乐意为您提供帮助,但您至少必须展示您的尝试。
-
编辑问题并添加
-
嗨。这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用一个变体搜索您的标题和关键字作为您的标签。
-
您的查询看起来不错,因此您需要检查您对数据的假设。首先,是否在您查询的数据库中有
parent_id为空且is_active= 1 的类别?如果有,是否有任何类别是这些类别的子类别?
标签: mysql sql join categories