我目前有一个需要修改的大型SQL查询(不是我的)。我有一个交易和估价表。该交易与估值具有一对多的关系。这两个表是通过外键连接的。
如果在特定日期之后没有对交易进行估值,我被要求阻止任何交易(以及随后的估值)被退回。我认为我将实现这一点的方式是使用内部查询,但我需要让内部查询知道外部查询和事务。如下所示:
output {
display: inline-block;
}
显然上面的内容是不可行的,因为内部查询是分开的,我不能从内部引用外部查询V引用。我该怎么做呢,还是有更简单的方法?
这就是设置WHERE V.DATE>的情况。在外部查询中,因为我想阻止给定交易的任何估价,如果它们中的任何一个超过指定日期,而不仅仅是那些。
非常感谢您提供的任何帮助。
答案 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>
)
如果执行时间很重要,您可能需要测试实际数据的各种解决方案,看看哪种解决方案最适合您的情况。