まず、同様の質問をすでに見ましたが、それは私の問題とはまったく関係がありませんでした。
次に、これは宿題ですが、質問は SQL 構文に関するものです。クエリは既に作成しており、結果は予想どおりで、順序付けされていません。
第三に、エラーが発生している理由を知っていると思います-サブクエリ(y)(ies)が外側のクエリの順序に影響を与えているため(おそらく)、クエリがネストされている方法に基づいて順序を作成できません.
クエリは次のとおりです。
SELECT DISTINCT E.ssn, E.lname
FROM employee E, works_on W
WHERE E.ssn = W.essn AND
W.pno NOT IN
(SELECT P.pnumber
FROM project P
WHERE P.plocation = 'Houston')
MINUS
(SELECT E.ssn, E.lname
FROM employee E, works_on W, project P
WHERE E.ssn = W.essn AND
W.pno = P.pnumber AND
P.plocation = 'Houston')
ORDER BY E.lname;
SSN LNAME
--------- ---------------
123456789 Smith
453453453 English
987987987 Jabbar
999887777 Zelaya
ORDER BY E.lname
クエリの最後から削除すると、正常に実行されます。そうしないと、「無効な識別子」エラーが発生します。これはE.lname
、クエリのその時点では何も意味がないためだと思います。
だから私の質問は...どうすれば結果をソートできるような方法でクエリを「ラップ」できE.lname
ますか?
すでに 9,000 以上の方法でラップしようとしましたが、うまくいく解決策が見つかりませんでした。私はSQLも初めてなので、現在持っているものよりも少ない量のサブクエリを使用して同じ結果を得るためにクエリの構造を変更できるとは思えません。
時間を割いて私を助けてくれた人に感謝します。テーブル作成コードを提供する必要がある場合は、お知らせください。