2017-02-15 9 views
2

によると私は正常にオラクルに次のようなSELECT文を実行しました:OracleのSQLを選択 - 有効な選択リストは、構文図

ここ
SELECT a.*, b.* FROM table_a a, table_b b; 

私は「」テーブルエイリアスをtable_a与え、別名「Bをtable_b ' 次に、選択リスト( 'a。*、b。*')の2つのテーブルエイリアスを テーブルのすべてのカラムを選択するために、各テーブルエイリアスにアスタリスクを付けて を使用します。

確かに、すべての列を両方のテーブルから取得するのに、選択リストとして '*'を使用することができますが、選択リスト (ここでは 'a。*、b。*')に対して有効なものについてです。

私は上記のような文を実行できますが、Oracleのマニュアルで選択リストの構文図を見ると、選択リストで複数のテーブルエイリアスを使用できないようです。

質問は、選択リストの構文図で( 'a。*、b。*')のようなものを得ることができるかどうかです。構文図では、あたかもselect内に1つのテーブルエイリアスを持つことができるかのように思えます。なぜなら、ダイアグラム内でカンマと他のテーブルエイリアスを追加することはできないからです。

構文図:SELECTのためhttp://docs.oracle.com/database/121/SQLRF/img/select_list.gif

一般的な説明:http://docs.oracle.com/database/121/SQLRF/statements_10002.htm#SQLRF01702

+0

さておき、http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick(回避しよう-using-old-style-joins.aspx) – JohnHC

+0

@ JohnHC通常、新しいスタイルの結合を使用します。ありがとうございます。ここで私はちょうど有効な構文について興味があります。 – FFSmith

答えて

1

はいすることができます。より多くの値がある場合は、以下に示すようにカンマにトラバースする必要があります。 [参加する古いスタイル]として

enter image description here

+1

ダイアグラムの小さな監視/バグのように見えます。この混乱は、コンマのパスを外部に置き換え、内部の '[t_alias]。* 'をスワップすることで明らかになります。 – MT0

+0

私は、シンタックスダイアグラムで他の式に単一カンマを使用しようとしたと思います。例えば、 'schema.table。*'や 'expr as c_alias'のような他の式には、同じカンマが使用されています。 – JSapkota

+0

しかし、 'SELECT *、1 FROM DUAL'の構文は無効ですが、' SELECT d。*、1 FROM DUAL d'は有効です - 構文図の2つのパスの位置を入れ替えると、また、最初のものが有効な構文でなければならないことを意味します(そうではありません)。 – MT0

関連する問題