我想要的是表1或表3的ID号,其中特定颜色的值高于另一张表中特定颜色的值。
赞: 从表1中选择ID,其中表1中的颜色“蓝色”的值高于与表3中的ID匹配的颜色“紫色”的值。
表1
ID | Color | KeyA | KeyB
1 | Blue | AB | 12
2 | Red | CD | 34
3 | Green | EF | 56
1 | Pink | EF | 7
表2
KeyA | KeyB | Value
AB | 12 | 10
AB | 34 | 20
EF | 56 | 40
表3
ID | Color | KeyC | KeyD
1 | Purple | QW | 15
2 | Yellow | ER | 45
3 | Orange | TY | 78
表4
KeyC | KeyD | Value
QW | 15 | 8
TY | 45 | 26
TY | 78 | 67
表1和表3通过ID连接(不是唯一的) 表1和表2连接在它们的KeyA和KeyB上 表3和表4分别在它们的KeyC和KeyD上连接
这可能很简单,但是我一直在盯着它看很久了。
Eddit:原始问题已由scaisEdge回答,但我有一个后续问题。
是否还可以从表1中选择ID,其中颜色为“蓝色”的行的对应值比颜色为“粉红色”的行的对应值高?
答案 0 :(得分:3)
您应该对所有表使用INNER JOIN,例如:
select t1.ID
from table1 t1
inner join Table2 t2 ON t1.KeyA = t2.KeyA AND t1.KeyB = t2.KeyB
inner join Table3 t3 ON t1.ID = t3.ID
inner join Table2 t4 ON t3.KeyC = t4.KeyC AND t3.KeyD = t4.KeyD
WHERE t2.value > t4.value
蓝色和粉红色的ID
select t1.ID
from table1 t1
inner join Table2 t2 ON t1.KeyA = t2.KeyA AND t1.KeyB = t2.KeyB
inner join Table3 t3 ON t1.ID = t3.ID
inner join Table2 t4 ON t3.KeyC = t4.KeyC AND t3.KeyD = t4.KeyD
INNER JOIN table1 t5 on t1.id = t5.id and t1.color='Blue' and t5.color='Pink'
WHERE t2.value > t4.value