[RDB][SQL] JOINについて
公開日:
:
DB, SQL inner join, JOIN, left outer join, SQL
JOINについて説明します。
まず、以下の2つのテーブルがあります。
簡単なテーブルなので、定義は割愛です。
商品マスタと、売上明細というよくあるパターンです。
●内部結合(inner join)
内部結合は、2つのテーブルのうち、一致する行のみ抽出します。
(例)商品マスタと売上明細を「id」で内部結合するSQL
select * from 商品マスタ T1 inner join 売上明細 T2 on T1.id = T2.id
1 2 3 4 5 6 7 8 9 10 |
(結果) id | name | price | date | id ----+----------+-------+---------------------+---- 1 | お菓子 | 100 | 2014-05-02 22:01:00 | 1 5 | ドリンク | 150 | 2014-05-05 11:13:00 | 5 3 | 雑誌 | 500 | 2014-05-13 09:08:00 | 3 3 | 雑誌 | 500 | 2014-05-13 23:31:00 | 3 1 | お菓子 | 100 | 2014-05-22 05:01:00 | 1 (5 行) </tt> |
●外部結合(outer join)
外部結合は、片方のテーブルにしか無いデータも表示します。
殆どの場合、left outer joinを使用することが多いので、左外部結合を例にあげます。
left outer joinの場合は、左側のテーブルは全量出力し、
右側のテーブルは、左側テーブルと結合できたものが表示されます。
(例)売上明細と商品マスタを「id」で左外部結合するSQL
select * from 商品マスタ T1 left outer join 売上明細 T2 on T1.id = T2.id
1 2 3 4 5 6 7 8 9 10 11 |
(結果) id | name | price | date | id ----+----------+-------+---------------------+---- 1 | お菓子 | 100 | 2014-05-02 22:01:00 | 1 5 | ドリンク | 150 | 2014-05-05 11:13:00 | 5 3 | 雑誌 | 500 | 2014-05-13 09:08:00 | 3 3 | 雑誌 | 500 | 2014-05-13 23:31:00 | 3 1 | お菓子 | 100 | 2014-05-22 05:01:00 | 1 2 | 鉛筆 | 120 | | 4 | 消しゴム | 50 | | (7 行) |
最後に、実践的な活用として、以下の情報を抽出してみます。
「売上明細の商品毎の総売上を抽出する。」
select T1.id , T2.name , sum(T2.price) from 売上明細 T1 inner join 商品マスタ T2 on T1.id = T2.id group by T1.id , T2.name
1 2 3 4 5 6 7 8 |
(結果) id | name | sum ----+----------+------ 1 | お菓子 | 200 5 | ドリンク | 150 3 | 雑誌 | 1000 (3 行) </tt> |
スポンサードリンク
関連記事
-
[PostgreSQL] よく使う基本コマンド
PostgreSQLでpsqlのコマンド入力をする場合の一般的SQL以外のコマンドを列挙します。
-
[PostgreSQL] csvでSQL結果を出力する方法(psqlコマンド)
SQLエディタ、接続ツールなどを使うと簡単に行える CSVファイルでの出力 について、コ
-
[PostgreSQL][SQL] 日付関連
●interval tbl_Aから、tbl_Bの日付で7日前~現在に当てはまるレコードを抽出す
-
[SQL] 副問い合わせのin句に指定できるワードの数について
副問い合わせのin句に指定できるワードの数について ●Oracle 1000個が上限のようで
-
[PostgreSQL][SQL] 文字列関連
PostgreSQLで文字列の処理をしたい場合のTipsをご紹介します。 ①文字列連結
-
[PostgreSQL][SQL] csvファイルのインポート
PostgreSQLでcsvファイルをインポートする際の方法を解説します。 例題として、以下の
-
[SQLServer] 日付の加算・減算
SQLServerでの日付の加算・減算方法をまとめます。 現在時刻の取得方法 現在時刻は「GET
-
[SQL] 割合を計算するときの定石(割られる数をCASTする)
なんとか率などの割合を計算するときのメモ。 割られるほうの数値を浮動小数点にCASTする 割られ
-
[SQL] case when文
select結果を条件で振り分けるSQL 通常はjoinとかwhere句で振り分けたりしますが
-
[SQL][集計関数] 行数をカウントするcount関数の解説
count関数について説明します。 count関数は、グループ化した単位での件数をカウントしま