【问题标题】:Select all where one value (with a criteria) is higher then a value in a other table (with different criteria)选择一个值(带有标准)高于另一个表中的值(带有不同标准)的所有值
【发布时间】:2018-08-17 17:21:27
【问题描述】:

我想要的是表 1 或表 3 的 ID 号,其中特定颜色的值高于另一个表中特定颜色的值。

喜欢: 从表 1 中选择 ID,其中 table1 中颜色“蓝色”的值高于 ID 匹配的 table3 中颜色“紫色”的值。

表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 上连接

这可能很简单,但我已经盯着它看了很久才看到它。


编辑:原始问题已由 scaisEdge 回答,但我有一个后续问题。

是否也可以从 Table1 中选择 ID,其中颜色为“蓝色”的行的相应值高于颜色为“粉红色”的行的相应值?

【问题讨论】:

  • 从表 1 中选择 ID,其中 table1 中颜色“蓝色”的 高于 ID 匹配的 table3 中颜色“紫色”的值。你说的是哪个值
  • @saravanakumarv 表(表 2 和表 4)的值列中的实际值(数字)。

标签: sql oracle


【解决方案1】:

您应该对所有表使用 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 

【讨论】:

  • 这是解决方案,谢谢。
  • 如果您不介意,我有一个小问题。是否可以找到颜色为“蓝色”的 ID,并且它的对应值大于颜色为“粉红色”的相同 ID 的对应值? (全部在Table1内)
  • 答案已更新 .. 希望是您正在寻找的 .. 否则发布一个新问题,并使用适当的数据样本和预期结果进行了很好的描述
  • stackoverflow.com/questions/51892595/… 发表了一个新问题,希望更清楚。
猜你喜欢
  • 2012-11-25
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多