如何从子查询结果中选择值 [英] how to select the value from sub query result

查看:91
本文介绍了如何从子查询结果中选择值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下面提到的以下4个表,并尝试从子查询中提取值 ACC_NUMBER ,请帮助我优化正确的语法

I have the following 4 tables mentioned below and trying to extract the value ACC_NUMBER from sub query, Please help me with optimized correct syntax

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)

推荐答案

您好,如果您使用的是D.DEAL_NUMBER NOT IN,则表示该记录 在ACCOUNT和ACCOUNT_DETAILS表中不存在联接,您将 从未获得该特定交易的ACC_NUMBER?

Hi, If you are using D.DEAL_NUMBER NOT IN that means that records join is not present in ACCOUNT and ACCOUNT_DETAILS table, You will never get ACC_NUMBER for that particular deals?

如果准备好对当前语法进行一些更改,则可以 进行联接以在查询结果中获得ACC_NUMBER:

If you are ready to do some alteration in the current syntax, You can play with joins to get ACC_NUMBER in your query result:

示例:

SELECT 
D.DEAL_NUMBER,
D.D_TYPE,
ACD.ACC_NUMBER,
DP.DEPARTMENT_NUMBER 
FROM 
DEALS D 
join DEPARTMENT DP
on D.DEP_NUMBER = DP.DEP_NUMBER
left join ACCOUNT_DETAILS ACD
on ACD.DEAL_NUMBER = D.DEAL_NUMBER
join ACCOUNT AC AC.ACC_NUMBER = ACD.ACC_NUMBER
WHERE DEAL_TYPE = 'XXXX'
             AND ACD.DEAL_NUMBER = D.DEAL_NUMBER

这篇关于如何从子查询结果中选择值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆