我目前有以下SQL查询,它从表中检索记录,也是它的父母和祖父母。我唯一的问题是它作为单个记录返回。我希望它以多行的形式返回,因为它存储在数据库中。
目前的结构:
comment_id | parent_comment_id
1 3
2 7
3 5
7 11
SQL:
SELECT p3.comment_id as `Grandparent`, p2.comment_id as `Parent`, p1.comment_id as `Child`
FROM comments p1
LEFT JOIN comments p2 on p1.comment_id = p2.parent_comment_id
LEFT JOIN comments p3 on p2.parent_comment_id = p3.comment_id
WHERE p1.comment_id = 1
当前输出(单行):
Grandparent | Parent | Child
5 3 1
期望的输出(单独的行):
comment_id
5
3
1
我正在修改一些现有的mysql
代码,目前我无法将所有内容转换为mysqli
或pdo
。
答案 0 :(得分:0)
试试这个:
select comment_id from cm where comment_id = 1
union
select parent_comment_id from cm where comment_id =1
union
select g.parent_comment_id from cm g
join cm p
on p.parent_comment_id = g.comment_id
where p.comment_id = 1;
请验证逻辑并确保它能为您提供正确的结果。
演示:SQLFiddle