0

このエラーが発生する理由がわかりません。

これが私のコードです:

SELECT DISTINCT c.cid 
  FROM customers c
 WHERE EXISTS ( SELECT DISTINCT t.aid 
                  FROM transactions t
                 WHERE EXISTS ( SELECT a.balance 
                                  FROM accounts a 
                                 WHERE t.cid = c.cid
                                   AND a.aid = t.aid
                                   AND ((sysdate - a.date_opened) > 365)
                                 ORDER BY a.balance DESC
                               )
              );

エラーは最後の行にあります。

4

3 に答える 3

1

2 つの問題があります。

  1. 直接の親レベルではないサブクエリからテーブルを参照することはできません — 内部のサブクエリはEXISTSテーブルを認識しないcため、条件t.cid = c.cidが間違っています
  2. ORDER BY内部EXISTSサブクエリには意味がありません。また、違法である可能性もありますが、よくわかりません。

EXISTSクエリを 2 から 2に書き直すことをお勧めしますJOINS。次のようになります。

SELECT cid 
  FROM (SELECT c.cid, a.balance
          FROM customers c,
               accounts a,
               transactions t 
         WHERE t.cid = c.cid
           AND a.aid = t.aid
           AND sysdate - a.date_opened > 365)
 ORDER BY balance DESC
于 2012-12-26T06:16:00.497 に答える
0

AND ((sysdate - a.date_opened) > 365)で間違いを犯しています

このように使用します:-

AND (sysdate - a.date_opened) > 365

于 2012-12-26T06:28:11.450 に答える