【发布时间】:2016-05-21 14:41:11
【问题描述】:
我正在努力处理具有以下要求的查询:
表 A
ID名称键 1 A1 键1 2 A2 键 2 3 A3 键3表 B
ID A_ID 名称 CONTAINER_A_ID 1 1 B1 空 2 1 B2 空 3 1 B3 2 4 2 B4 空 5 2 B5 空 6 3 B6 空 7 3 B7 空表 A 中的 Key 列是唯一的
表B中的A_ID列是表A的外键
表 B 中的 CONTAINER_A_ID 列表示表 B 中的行可以是 容器,它包含由 CONTAINER_A_ID 值指示的其他数据行。
下面是例子:
输入参数为表A键列值,假设A.Key = 'key1',根据上述样本数据得出的结果为:
A.ID A.NAME A.KEY B.ID B.A_ID B.NAME B.CONTAINER_A_ID 1 A1 KEY1 1 1 B1 空 1 A1 KEY1 2 1 B2 空 1 A1 键 1 3 1 B3 2 2 A2 KEY2 4 2 B4 空 2 A2 KEY2 5 2 B5 空如果输入参数是A.Key = 'key2',那么结果是:
A.ID A.NAME A.KEY B.ID B.A_ID B.NAME B.CONTAINER_A_ID 2 A2 KEY2 4 2 B4 空 2 A2 KEY2 5 2 B5 空谢谢
【问题讨论】:
-
如果您添加
A.Key = 'key1'作为条件,则将永远不会返回最后两个注册表!那是你真正需要的吗? -
是的,是的。我将在我的帖子中提供更多示例以使我的问题更清楚,谢谢。
-
我想我刚刚明白了。过滤器中的注册表和过滤结果中的子项。我想这会有点难。我不会尝试提供答案,因为我这里没有预言机来测试它。使用 CTE 的东西也许应该解决它。
标签: oracle