我有这张表名为"AFP"
:
ID || NAME || AFP_FUSION_ID
10 || afp1 ||
20 || afp2 ||
30 || afp3 || 90
40 || afp4 || 30
50 || afp5 || 30
90 || afp6 ||
where"ID" is a primary key
和"AFP_FUSION_ID" is a foreign key
that 引用同一张表。
我也有这张桌子叫"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
但会产生不一致,出现更多行。