【发布时间】:2015-01-05 01:04:05
【问题描述】:
我有这张表名为 "AFP":
ID || NAME || AFP_FUSION_ID
10 || afp1 ||
20 || afp2 ||
30 || afp3 || 90
40 || afp4 || 30
50 || afp5 || 30
90 || afp6 ||
其中 "ID" is a primary key 和 "AFP_FUSION_ID" is a foreign key 引用同一个表。
我还有这张表叫"Registers":
Full Name || AFP_DESTINO
JOHN || 10
PETER || 20
ELENA || 10
MARCO || 90
DANIELA || 30
FELIPE || 40
在哪里
AFP_DESTINO is a foreign key that references to AFP.ID
我必须创建一个函数,它的参数是一个数字(10、20、30、40、50 或 90),并且必须返回相应的信息。
- 如果函数接收到'10',函数必须返回数据
from "REGISTERS" where AFP_DESTINO = 10。 - 如果函数接收到'30'必须返回数据
where AFP_DESTINO = 30, 40 or 50。 - 如果函数接收到'90',则必须返回数据
where AFP_DESTINO = 90, 30, 40, 50。
我必须使用 Oracle,我有这个:
select * from (select * from registers
full outer join afp
on registers.AFP_DESTINO = afp.ID) where afp_destino = 30 or afp_fusion_id = 30
(我必须改进这一点并稍后转换为函数)。问题是如果我用 '30' 代替 '90',当 afp_destino = 40 or 50 时我将没有数据。
有人可以帮帮我吗?
更新:
我有这个代码来解决这个问题:
select * from (select * from registers
full outer join afp
on registers.AFP_DESTINO = afp.ID) connect by prior
afp_destino = afp_fusion_id start with afp_destino = 90
但会产生不一致,出现更多行。
【问题讨论】:
-
欢迎来到 Stack Overflow!这是一个您可以就您编写的软件遇到的问题提出问题并获得答案的网站,但它不是“为我做作业”或“为我做我的工作”的网站。当您提出问题时,您应该包括您编写的代码和您遇到的具体错误或您的程序产生的结果以及您预期的结果的解释。没有这些,我们真的无能为力帮助您。请编辑您的问题以显示您所做的事情并告诉我们代码存在哪些问题。再次,欢迎来到 Stack Overflow!
标签: sql database oracle function hierarchical-query