在一个查询中检索父子记录

Posted

技术标签:

【中文标题】在一个查询中检索父子记录【英文标题】:retrieve parent child records in one query 【发布时间】:2014-06-25 04:38:25 【问题描述】:

我有一个类似的数据集表,叫做“专辑”

album_id    parent_id   name
2           NULL        ...
34          NULL        ...
35          2       ...
36          2       ...

php 中,我的网址如下所示:http://www.website/album.php?albumid=2

也就是说,找到album_id 2(为null)的parent_id并返回parent/children:

album_id    parent_id   name
2           NULL        ...
35          2       ...
36          2       ...

当我的网址看起来像这样时:http://www.website/album.php?albumid=35

找到album_id 35(即2)的parent_id,返回记录是album_id = 2和parent_id = 2(父/子):

album_id    parent_id   name
2           NULL        ...
35          2       ...
36          2

如何在一个查询中完成?

【问题讨论】:

你能解释一下吗?另一张桌子叫什么名字? 没有其他表,只有表'album' 【参考方案1】:

这个怎么样?

SELECT *
FROM (
    SELECT parent_id 
    FROM album
    WHERE album_id = 35
) AS t1 INNER JOIN album t2
  ON t1.parent_id = t2.parent_id OR t1.albumn_id = t1.parent_id;

【讨论】:

实际上,它确实有效。我已经更改了最后一部分以使其正常工作...谢谢

以上是关于在一个查询中检索父子记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用物料清单的父子记录创建简单的数据关系

在存储过程中执行时选择查询不检索记录

从 MS Access 检索随机记录的查询 [重复]

oracle和postgresql 递归查询父子关系记录语法区别

在 SQL 中检索记录后立即更新表

CloudKit 不检索应该存在且可检索的记录