Oracle PL/SQL—查询一个表,从同一个表中选择数据,但使用另一个表的ID

Oracle PL/SQL—查询一个表,从同一个表中选择数据,但使用另一个表的ID,oracle,plsql,Oracle,Plsql,我知道这个标题是不公平的,我已经尝试过在连接和合并之间搜索,但是我有点困惑,可以用一些指导来写这个 我有两张桌子: Table 1 A B C 20348 12306 191 31502 12306 20342 12297 191 31492 12297 20341 12296 191 31504 12296

我知道这个标题是不公平的,我已经尝试过在连接和合并之间搜索,但是我有点困惑,可以用一些指导来写这个

我有两张桌子:

 Table 1                
 A  B   C       
 20348  12306   191     
 31502  12306           
 20342  12297   191     
 31492  12297           
 20341  12296   191     
 31504  12296           
 20344  12299   191     
 31499  12299           

Table 2             
A(ident)B (F_Key of T1_A)   C   D   E
25003   20348              1    2   3
35915   20342              1    2   3
41883   20341              1    2   3
31303   20344              1    2   3
我想取表2,选择内容B,C,D,E,但是我想选择表1,A列作为B,其中表1C为空,表1B=X

表2 B列是表1A的外键

因此,我希望看到:

A       B       C   D   E
5555    31502   1   2   3
5556    31492   1   2   3
5557    31504   1   2   3
5558    31499   1   2   3

非常感谢您的帮助。

因此,如果我正确理解了您的问题,您需要在选择中使用案例陈述:

select (case when t1.C is null and t1.b=X then t1.A else t2.B end), t2.C, t2.D, t2.E
 from Table1 t1 join table2 t2 on t1.A = t2.B

也不确定表1b=X是什么意思,所以我只是保留了与您解释中相同的语法。请随意修改该部分。试试看它是否适合你

我能找到我需要的东西

最后,我在数据库中进一步介绍了表3,表3的主键是表1 B列的外键,该列引用了主键并创建了:

select t1b.A, t2.C, t2.D, t2.E
from Table1 t1a, table1 t1b, table2 t2, table3 t3 
WHERE t3.A = t1a.b
AND t1a.C is null
AND t2.B = t1a.A
AND t1b.B = t3.A
AND t1b.B = 'xxx'

在您希望看到的结果中,列A的值与表1.A和表2.A的值不同。你能解释一下这些值代表什么吗?表2a是一个等式。我虚构了一个自动递增的A。为什么您认为您需要一个存储过程?