【发布时间】:2013-05-08 20:51:30
【问题描述】:
我有两个表 A 和 B,例如:
A (id, dep_id) 和 B (id, amount)
那些表中的数据是这样的
A B
id dep_id id amount
--- ------- ---- --------
1 2 1 100
2 3 2 200
3 NULL 3 300
4 NULL 4 400
表 A 中的 id 列包含表 B 的 id。对于表 A 中的给定 id,可能有一个 dep_id 包含表 B 的 id。
要求是计算 B 中的条目及其所有相关条目的数量之和。这必须在一个 sql 查询中完成。我不能为此使用 PL/SQL 块。任何想法如何做到这一点。
例子:
sum(id=1) = 100(id=1,dep_id=2) + 200(id=2,dep_id=3) + 300(id=3) = 600
【问题讨论】:
-
有点困惑。这是等级制度吗? (id = 孩子,dep_id = 父母)?还是我需要更多的咖啡?
-
您需要一个支持
WITH RECURSIVE的数据库版本才能在一个查询中获得此信息。您可以使用吗? -
@AndrewLazarus 分层查询自 Oracle 2 以来一直存在(我相信是 1978 年 :)
-
@VincentMalgrat:我自己使用 Postgres,所以不太了解 Oracle 的增强。无论如何,这是这种查询的必经之路。
标签: sql algorithm oracle recursion