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。为什么您认为您需要一个存储过程?