2017-07-28 7 views
2

サブクエリ結果から値を選択する方法、最適化された正しい構文で私を助けてください私は、次の4つのテーブルは、下記のサブクエリから値を<strong>ACC_NUMBER</strong>を抽出しようとしている

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) 
+0

何かする前にあなたがしなければなりませんこの古い結合技法ではなくANSI' SQL結合を使用してください – XING

+2

"D.DEAL_NUMBER NOT IN"を使用している場合、レコード結合がACCOUNTおよびACCOUNT_DETAILS表に存在しないことを意味しますが、その特定の取引ではACC_NUMBERをどのように受け取ることができますか? –

+0

私は現在の構文のいくつかの変更でACC_NUMBERを抽出しようとしていますが、結果にACC_NUMBERが必要です – mahesh

答えて

1

こんにちは、を使用している場合は、レコード がACCOUNTテーブルとACCOUNT_DETAILSテーブルに存在しないことを意味します。 は、その特定の取引のACC_NUMBERを決して受け取りませんか?

あなたは現在の構文にいくつかの変更を行う準備ができている場合は、次のことが可能 で遊ぶあなたのクエリ結果にACC_NUMBERを取得するために結合します

例:

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 
+0

返信ありがとうございました。以前の要件は、account_detailsテーブルに関連付けられていないdeal_numberを選択することでした。 deal_numberとaccount_numberを選択することです – mahesh

+0

私たちは機能を作成することでこれを達成することができますか? – mahesh

+0

単純なクエリを使用してそれを達成できる場合、なぜ関数を作成するのですか? –

関連する問題