【问题标题】:SQL loop. I want to iterate through a loop containing SELECT resultsSQL 循环。我想遍历一个包含 SELECT 结果的循环
【发布时间】:2018-11-27 21:43:21
【问题描述】:

我需要从具有列结构(父、子)的表中:

  1. 对于特定的父母,我需要所有的孩子。
  2. 从 (1) 我也需要孩子的孩子的结果。

例如对于 parent=1:

    parent|child  parent|child   parent|child
    1      a        a     d        b      f
           b              e               g

【问题讨论】:

  • 您想要 3 个单独的记录集还是全部生成一个记录集?
  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签postgresqloracledb2sql-server、...
  • 您能否发布将产生示例结果的父|子输入数据?我在理解您要执行的操作时遇到了一些问题。
  • 我正在使用 DB2,我需要一个记录集中的所有结果

标签: sql hierarchical-data recursive-query


【解决方案1】:

我想,这会让你得到你想要的信息。两列:child 和 grandchild(如果有,否则为 NULL)。不确定它是否是您想要的架构,因为您没有指定。您可以添加 JOIN 来增加递归深度。

select t1.child, t2.child
from T as t1 left join T as t2
on t1.child = t2.parent
where t1.parent = 1

这适用于 SQLite;我觉得挺标准的。关于模式,如果这个不能为您服务,希望它可以给您一些想法;否则请详细说明。

【讨论】:

  • 这在关系超过3级的情况下是不准确的,例如A有孩子B,B有孩子C,这个问题实际上是一个常见的场景,可以使用递归来解决。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2019-02-18
  • 2018-08-09
  • 1970-01-01
  • 2015-10-05
相关资源
最近更新 更多