我知道标题不会公正,我尝试在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
非常感谢任何帮助。
答案 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'