【发布时间】:2017-07-28 09:32:40
【问题描述】:
我有下面提到的以下 4 个表,并试图从子查询中提取值 ACC_NUMBER,请帮助我优化正确的语法
ACCOUNT TABLE
-------------------------
|ACC_NUMBER | ACC_NAME|
-------------------------
ACCOUNT_DETAILS TABLE
---------------------------------
|ACC_NUMBER |DEAL_NUMBER|DEAL_TYPE|
---------------------------------
DEALS TABLE
------------------------------------
|DEAL_NUMBER |DEAL_TYPE|DEP_NUMBER |
------------------------------------
DEPARTMENT TABLE
------------------------
|DEP_NUMBER | DEP_NAME |
------------------------
SELECT
D.DEAL_NUMBER,
D.D_TYPE,
DP.DEPARTMENT_NUMBER
FROM
DEALS D , DEPARTMENT DP
WHERE
D.DEP_NUMBER = DP.DEP_NUMBER
AND D.DEAL_NUMBER NOT IN
(SELECT ACD.DEAL_NUMBER
FROM ACCOUNT_DETAILS ACD, ACCOUNT AC
WHERE AC.ACC_NUMBER = ACD.ACC_NUMBER
AND DEAL_TYPE = 'XXXX'
AND ACD.DEAL_NUMBER = D.DEAL_NUMBER)
【问题讨论】:
-
首先你必须使用
ANSIsql join 而不是这种旧的连接技术 -
如果您使用“D.DEAL_NUMBER NOT IN”,这意味着 ACCOUNT 和 ACCOUNT_DETAILS 表中不存在记录连接,您如何期望获得该特定交易的 ACC_NUMBER?
-
我正在尝试通过对当前语法进行一些更改来提取 ACC_NUMBER,但我希望结果中包含 ACC_NUMBER