SQL 結合


SQL SELECT
SQL DISTINCT
SQL WHERE
SQL AND OR
SQL IN
SQL BETWEEN
SQL LIKE
SQL ORDER BY
SQL 関数
SQL COUNT
SQL GROUP BY
SQL HAVING
SQL 別名
SQL 結合
SQL 外部結合
SQL SUBQUERY
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL CONCATENATE
SQL SUBSTRING
SQL TRIM


サイトのご案内

  SQL > SQL コマンド > Join

まず、結合(join)とは何かを説明したいのですが、それを理解する前に、今まで見てきた多くのコマンドを使うことになります。仮に、以下の二テーブルがあるとする。

Store_Information テーブル
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Geography テーブル
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

そして、地域 (region_name) ごとの売上 (sales)を調べることにします。 Geography テーブルに各地域の店、 Store_Information テーブルに各店の売上が示されます。もし、地域ごとの売上を調べる場合、その二テーブルのデータを結合します。詳しく見たところ、フィールドstore_nameの一つで、この二テーブルを結合できることが分かります。まず、SQL の句を示して、各句の意味を見ましょう。

SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

の結果ができます。

REGION   SALES
East   $700
West   $2050

一行目のところで、SQL を使って、二フィールドを選びます。一つ目は Geography テーブルのregion_name フィールド (別名REGION); 二つ目は Store_Information テーブルのsales フィールド (別名 SALES)。ここで、使われるテーブル別名: Geography テーブルの別名はA1、 Store_Information テーブルの別名はA2であることを注意してください。テーブル別名を使わない場合、一行目は次のようになります。

SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES

それは明らかに複雑になります。ここで見たテーブル別名の用途: SQL文が分かりやすくなることがあり、特に幾つかのテーブルを含むSQL文の場合。

続いて、三行目、即ち WHERE 句を見ましょう。ここが結合の条件づけを述べるところ。ここで、 Geography テーブルにおけるstore_name フィールドの值及び Store_Information テーブルにおけるstore_name フィールドの值が同じであることを確かめます。 WHERE 句は、その二テーブルの結合を確かめる役割に使われるもので、即ちその結合の役割を果すポイント。 WHERE 句が間違った場合、直績結合 (Cartesian join)を得る可能性が高い。そして、直績結合により、二テーブルの二行ごとのあらゆる組み合わせを得ることになります。そういった場合、直績結合により、4 x 4 = 16 行の結果が出ます。

SQL 外部結合 >>