使用外部查询atttribute限制内部查询

时间:2016-10-14 11:09:35

标签: sql oracle join

我目前有一个需要修改的大型SQL查询(不是我的)。我有一个交易和估价表。该交易与估值具有一对多的关系。这两个表是通过外键连接的。

如果在特定日期之后没有对交易进行估值,我被要求阻止任何交易(以及随后的估值)被退回。我认为我将实现这一点的方式是使用内部查询,但我需要让内部查询知道外部查询和事务。如下所示:

output {
    display: inline-block;
}

显然上面的内容是不可行的,因为内部查询是分开的,我不能从内部引用外部查询V引用。我该怎么做呢,还是有更简单的方法?

这就是设置WHERE V.DATE>的情况。在外部查询中,因为我想阻止给定交易的任何估价,如果它们中的任何一个超过指定日期,而不仅仅是那些。

非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

你可能正在寻找这个

SELECT * 
FROM TRANSACTION_TABLE T 
INNER JOIN VALUATION_TABLE V1 ON T.VAL_FK = V1.ID 
WHERE (SELECT COUNT(*) 
       FROM VALUATION_TABLE V2 
       WHERE V2.ID = V1.ID AND V2.DATE > <GIVEN DATE>) > 1

答案 1 :(得分:0)

SELECT * 
FROM  TRANSACTION_TABLE T 
      INNER JOIN VALUATION_TABLE V1 ON T.VAL_FK = V.ID 
WHERE V.ID IN ( SELECT ID 
                FROM   VALUATION_TABLE
                WHERE  DATE > <GIVEN DATE>
              )

如果执行时间很重要,您可能需要测试实际数据的各种解决方案,看看哪种解决方案最适合您的情况。