現在、Oracle SQL開発者を使用してSQLを学習しています。SELECTを使用して戻るときに親クエリにサブクエリの列が表示されない*
クエリを書きながら、私は同じクエリの3つの異なるバージョンを考え出しました。
SELECT
sh.share_id
FROM shares sh
LEFT JOIN trades tr
ON sh.share_id = tr.share_id
WHERE trade_id is NULL;
SELECT
sr.share_id
FROM (SELECT sh.share_id, tr.trade_id
FROM shares sh
LEFT JOIN trades tr
ON sh.share_id = tr.share_id) sr
WHERE sr.trade_id is NULL;
SELECT
sr.share_id
FROM (SELECT *
FROM shares sh
LEFT JOIN trades tr
ON sh.share_id = tr.share_id) sr
WHERE sr.trade_id is NULL;
最初の2つのクエリを実行し、コンパイルし、同じ結果セットを返すが、私は第三クエリを実行しようとすると、私は、第三のクエリの2行目にエラーが発生します。 "SR"。 "SHARE_ID":無効な識別子です。 SELECTステートメントの*がすべての列を選択するので、なぜこのエラーが発生するのですか?
両方のテーブルに「trade_id」列がありますか? –
取引テーブルのみが "trade_id"カラムを持っています – Suong
申し訳ありませんが、trade_idについて質問するのは私の意志ではありませんでしたが、 "share_id"は両方のテーブルにあるのでしょうか? –