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

时间:2016-08-31 19:38:01

标签: oracle plsql

我知道标题不会公正,我尝试在Joins和Merges之间进行搜索,但是我有点难过并且可以使用一些指导来写这个。

我有两张桌子:

 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,其中表1 C为空表1 B = 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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

因此,如果我理解你的问题,你需要在你的选择中使用case语句:

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

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

答案 1 :(得分:0)

我能够根据我的需要解决这个问题。

我最终在我的数据库中进一步升级了表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'