SQL > SQL コマンド > Join

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

Store_Information テーブル
Store_Name Sales Txn_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 外部結合 >>



Copyright © 2017   1keydata.com   All Rights Reserved