重複するテーブル名は、「スタージョイン」を作成するために使用します。スタージョインでは、1 つのテーブルまたはビューが複数のテーブルやビューにジョインされます。
スタージョインを作成するには、同じテーブル名、ビュー名、または相関名を FROM 句内で 2 回以上使用します。これは、ANSI/ISO SQL 標準の拡張機能です。重複名を使用しても機能は追加されませんが、使用すると特定のクエリを簡単に作成できます。
重複名は、構文が意味をなすように、必ず異なるジョイン内に置きます。同一ジョイン内でテーブル名やビュー名を 2 回使用すると、2 番目のインスタンスは無視されます。たとえば、FROM A,A
と FROM A CROSS JOIN A
は、どちらも FROM A
と解釈されます。
次の例は SQL Anywhere で有効です。A、B、C はテーブルです。この例では、テーブル A の同一インスタンスは B と C のどちらにもジョインされます。スタージョインでジョインを分けるときにはカンマが必要です。スタージョインでのカンマの使用方法は、スタージョインの構文特有のものです。
SELECT * FROM A LEFT OUTER JOIN B ON A.x = B.x, A LEFT OUTER JOIN C ON A.y = C.y; |
これは、次の例と同義です。
SELECT * FROM A LEFT OUTER JOIN B ON A.x = B.x, C RIGHT OUTER JOIN A ON A.y = C.y; |
2 つの例はどちらも次の ANSI/ISO 標準構文と同義です (カッコはオプションです)。
SELECT * FROM (A LEFT OUTER JOIN B ON A.x = B.x) LEFT OUTER JOIN C ON A.y = C.y; |
次の例では、テーブル A が 3 つのテーブル B、C、D にジョインされます。
SELECT * FROM A JOIN B ON A.x = B.x, A JOIN C ON A.y = C.y, A JOIN D ON A.w = D.w; |
上の例は、次の ANSI/ISO 標準構文と同義です (カッコはオプションです)。
SELECT * FROM ((A JOIN B ON A.x = B.x) JOIN C ON A.y = C.y) JOIN D ON A.w = D.w; |
複雑なジョインは図にするとわかりやすくなります。前述の例は次の図で説明できます。この図から、テーブル B、C、D がテーブル A を介してジョインされることがわかります。
重複するテーブル名を使用できるのは、extended_join_syntax オプションが On (デフォルト) になっている場合だけです。
-
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |