このテーブルの名前は次のとおり"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
。
私はオラクルを使わなければなりません、私はこれを持っています:
select * from (select * from registers
full outer join afp
on registers.AFP_DESTINO = afp.ID) where afp_destino = 30 or afp_fusion_id = 30
(これを改善し、後で関数に変換する必要があります)。それに関する問題は、「90」を「30」に置き換えると、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
しかし、不整合が発生します。より多くの行が表示されます。