結合内の列
JOIN 演算子は、あるテーブルの値と別のテーブルの値を比較して行を関連付けます。それぞれのテーブルで関連付けに使用する列を決める必要があります。次の選択肢があります。
関連する列 通常は、外部キー リレーションシップが存在する列の値を一致させることでテーブルを結合します。たとえば、discounts テーブルと stores テーブルは、それぞれのテーブルの stor_id を一致させることで結合できます。結果の SQL ステートメントは次のようになります。
SELECT * FROM discounts INNER JOIN stores ON stores.stor_id = discounts.stor_id
関連する列でテーブルを結合する方法の詳細については、「テーブルの自動結合」を参照してください。
関連しない列 外部キー リレーションシップが存在しない列の値を関連させて、テーブルを結合することもできます。たとえば、publishers テーブルと authors テーブルは、それぞれのテーブルの state 列の値を一致させることで結合できます。この結合で作成される結果セットでは、同じ州内の著者と出版社の組が、行ごとに示されます。
SELECT au_lname, au_fname, pub_name, authors.state FROM authors INNER JOIN publishers ON authors.state = publishers.state
関連のない列でテーブルを結合する方法の詳細については、「手動によるテーブル結合」を参照してください。
結合するテーブルの行の関連付けに、複数の列を使用する場合もあります。たとえば、著者の居住地と出版社の所在地が同一の市内にある著者と出版社の組み合わせを検索するには、2 つのテーブルの州の列と市の列を一致させる結合演算を使用します。異なる州に同じ名前の市が存在する場合があるので (イリノイ州のスプリングフィールドとマサチューセッツ州のスプリングフィールドなど)、市と州の両方を一致させる必要があります。
複数の列でテーブルを結合する方法の詳細については、「複数列によるテーブル結合」を参照してください。