【发布时间】:2016-10-14 11:09:34
【问题描述】:
我目前有一个需要修改的大型 SQL 查询(不是我的)。我有一个交易和估值表。该交易与估值具有一对多的关系。这两个表是通过外键连接的。
如果某笔交易的估值在某个日期之后不存在,我被要求防止任何交易(连同其后续估值)被退回。我认为实现这一点的方法是使用内部查询,但我需要让内部查询了解外部查询和事务。所以像:
SELECT * FROM TRANSACTION_TABLE T
INNER JOIN VALUATION_TABLE V WHERE T.VAL_FK = V.ID
WHERE (SELECT COUNT(*) FROM V WHERE V.DATE > <GIVEN DATE>) > 1
显然上述方法不起作用,因为内部查询是独立的,我无法从内部引用外部查询 V 引用。我该怎么做呢,还是有更简单的方法?
这只是在外部查询中设置 WHERE V.DATE > 的情况,因为如果其中任何一个交易超过指定日期,我想阻止对给定交易进行任何估值,而不仅仅是那些超过指定日期的交易。
非常感谢您提供的任何帮助。
【问题讨论】: