Top/Oracle/複数表からのデータ取得

Oracle/複数表からのデータ取得

直積演算

2つ以上の表の全てのデータ組み合わせの結合。一般的には余り意味のない結合方法。
以下に示す場合に直積演算となる。
・結合条件が省略されている。
・結合条件が適切でない。
・表内の全ての行をお互いの表の全ての行に結合する。

単純結合(等価結合)

2つ以上の互いの表の値が等価であるものを条件とした結合。
(WHERE A.a = B.b)

単純結合(非等価結合)

表の値が非等価であるものを条件とした結合。
(WHERE A.a >= B.b)、(WHERE BETWEEN A.a and A.b)

自己結合

1つの表を2つに見立てた結合。
(FROM A Aa, A Ab WHERE Aa.a = Ab.b)

外部結合

単純結合で戻された全ての行と、一方の表の行とは一致しない行の両方を返す結合。
一致する行を持たない方に'(+)'を付ける。
(WHERE A.a = B.b(+))

SQL:1999構文

ANSI(米国規格協会)、ISO(国際標準化機構)で制定されたSQL文の国際標準。

自然結合(SQL:19 ... FROM 表名 NATURAL JOIN 表名

USING 構文

SELECT ... FROM 表名 JOIN 表名 USING (結合列名)
・結合する表で、一致する名前とデータ型を持つ列は自動的に結合される。
・共通の列が複数存在すると全て結合される。
・共通の列で指定した列だけ結合したい場合はUSING句を使用する。
・"NATURAL JOIN" と "USING" は一緒には使えない。
・結合列は表名または別名で修飾してはいけない。SELECT・WHERE句でも列の修飾は不要。

クロス(直積)結合(SQL:1999)

クロス結合構文

SELECT ... FROM 表名 CROSS JOIN 表名
・両方の表に存在する列名は修飾する必要がある。

等価/非等価/自己結合(SQL:1999)

結合列の名前が異なる場合や任意の条件を指定する場合。
・ON句で結合条件、WHERE句で検索条件を指定する。
・WHEREの代わりにANDを指定する事もできる。

非等価結合構文

SELECT ... FROM 表名 JOIN 表名 ON a BETWEEN b AND c

自己結合構文

SELECT ... FROM A Aa JOIN A Ab ON Aa.a = Ab.a

3つの表の結合(SQL:1999)

SELECT ... FROM 表名A JOIN 表名B ON 表名Aと表名Bの結合条件 JOIN 表名C ON 表名Bと表名Cの結合条件

左側外部結合(SQL:1999)

左側の表の持つ一致しない行を戻す結合。

構文

SELECT ... FROM 表名 A LEFT OUTER JOIN 表名 B ON (AとBの結合条件)

右側外部結合(SQL:1999)

右側の表の持つ一致しない行を戻す結合。

構文

SELECT ... FROM 表名 A RIGHT OUTER JOIN 表名 B ON (AとBの結合条件)

完全外部結合(SQL:1999)

両方の表それぞれに一方の表に一致しない行がある場合に両方の行を戻す結合。

構文

SELECT ... FROM 表名 A FULL OUTER JOIN 表名 B ON (AとBの結合条件)

このページを共有:
  • このページをはてなブックマークに追加 このページを含むはてなブックマーク
  • このページをlivedoor クリップに追加 このページを含むlivedoor クリップ
  • このページをYahoo!ブックマークに追加
  • このページを@niftyクリップに追加
  • このページをdel.icio.usに追加
  • このページをGoogleブックマークに追加

このページのURL:

ページ新規作成

新しいページはこちらから投稿できます。

TOP