我如何加入下表
TableA TableB TableC TableD
ID ID_C ID ID_A Value ID ID ID_C Value
1 1 1 1 a 1 1 1 a
2 1 b 2 1 b
以获得结果
Result
ID ID_B Value ID_C ID_D Value
1 1 a 1 1 a
1 2 b 1 2 b
并且我的结果不应包含1 2 b 1 1 b,并且两个值列不能始终具有相同的值,因此不能在条件中使用。
为了简化,
Resultant Table TableA TableB
ID Value ID Value ID ID_A
1 a 1 a 1 1
1 b 2 g 2 1
2 a 3 d 3 2
3 c 4 3
现在我需要使用TableA,TableB加入Resultant Table,以便从TableA,TableB和ResultantTable.ID = TableA.ID和TableB.ID_A = TableA.ID中获取一些列,因为它是一个外键。
使用TableB进行连接会变为重复。由于ID = 1出现两次,我得到4条记录,其中ID = 1,当时只有2条记录。它可以使用distinct或group by来完成,但我还需要显示其他列。如何在此过程中执行这两个操作。
答案 0 :(得分:0)
SELECT A.ID, B.ID, B.Value, C.ID, D.ID, D.Value
FROM TableA A
INNER JOIN TableB B ON A.ID = B.ID_A
INNER JOIN TableC C ON A.ID_C = C.ID
INNER JOIN TableD D ON B.ID = D.ID AND C.ID = D.ID_C
答案 1 :(得分:0)
您告诉我们TableB中的字段“值”不应该与TableD中的字段“value”不同吗?我们可以用B.Value = D.Value替换B.ID = D.ID,以解决您的问题吗?
您确定,这是假设工作的方式吗?
答案 2 :(得分:0)
尝试:
SELECT A.ID, B.ID ID_B, B.Value Value_B, C.ID ID_C, D.ID ID_D, D.Value Value_D
FROM TableA A
JOIN TableB B ON A.ID = B.ID_A
JOIN TableC C ON A.ID_C = C.ID
JOIN TableD D ON B.Value = D.Value AND C.ID = D.ID_C