我有一个类别表。这具有递归关系,因此类别可以成为另一个类别的子类别。该表如下所示:
id name short_desc long_desc tag_id parent_id
我写了简单的sql来找到所有1级类别:
SELECT * FROM category WHERE parent_id =0
然后我编写了一个查询来获取所有2级类别(其中父类别没有父级)
SELECT * FROM category WHERE parent_id IN (SELECT id FROM category WHERE parent_id =0)
我想做的是生成一个列,其中显示所有类别数据和任何相关的父类别。
逻辑上是这样的:
结果应如下所示:
id name short_desc long_desc tag_id parent_name parent_name_2
如果parent_name为null / empty,则parent_name应保持为空。如果字段中有parent_name id,则检查是否存在parent_name_2,如果存在,则填充两列,如果没有,则仅填充parent_name。
我确实可以选择在jquery或php中编码,我知道该怎么做。但是,我确信我可以从一个好的SQL查询中获取所需的数据。
非常感谢任何帮助。
亲切的问候
尼克
答案 0 :(得分:2)
这是使用多个外连接的一个选项:
select c.*,
case when c2.id is not null then c2.name end parent_name,
case when c3.id is not null then c3.name end parent_name_2
from category c
left join category c2 on c.parent_id = c2.id
left join category c3 on c2.parent_id = c3.id