複数のテーブルから抽出したデータを集めるときはUNIONを使います。
SELECT カラム名1 FROM テーブル名1 UNION SELECT カラム名2 FROM テーブル名2;
SELECT
カラム名1
FROM
テーブル名1
UNION
SELECT
カラム名2
FROM
テーブル名2;
SELECT * FROM tb1 UNION SELECT * FROM tb2;
条件を指定して、複数のテーブルからデータを抽出する
SELECT bang FROM tb WHERE uria>=200
UNION
SELECT bang FROM tb1 WHERE tosi>=35;
↑これだと重複する値は省いている
重複する値も全て表示する場合はUNION ALL
SELECT bang FROM tb WHERE uria>=200
UNION ALL
SELECT bang FROM tb1 WHERE tosi>=35;
複数のテーブルを結合して表示する
JOIN
SELECT カラム名
FROM テーブル1
JOIN 結合するテーブル2
ON テーブル1のカラム=テーブル2のカラム;
SELECT *
FROM tb
JOIN tb1
ON tb.bang=tb1.bang;
SELECT tb.bang AS “社員番号”,tb1.nama AS “氏名”,tb.uria AS “売上”
FROM tb
JOIN tb1
ON tb.bang=tb1.bang;
テーブルにエイリアスを付けて表示
tb=x tb1=yとしたいとき
SELECT x.bang,y.nama,x.uria
FROM tb AS x
JOIN tb1 AS y
ON x.bang=y.bang;
カラム名が同じ時に使えるUSING
SELECT tb.bang,tb.nama,tb.uria
FROM tb
JOIN tb1
USING(bang);
SELECT tb.bang AS “社員番号”,tb1.nama AS “氏名”,tb.uria AS “売上”
FROM tb
JOIN tb1
USING(bang)
WHERE tb.uria>=100
ORDER BY tb.uria;
売上が100以上の条件で抽出し、昇順で並べ替える
JOIN(内部結合)だとキーが一致しているレコードのみ抽出される
Aのテーブルに田中さんのデータがあっても、Bのテーブルに田中さんのデータが無い場合、JOINすると田中さんのデータは出てこない。
外部結合を使うとどちらかのテーブルのレコードを全て書き出すことが出来る
LEFT JOIN (一致したレコード&テーブル1のレコードの全てのデータを表示)
RIGHT JOIN (一致したレコード&テーブル2のレコードの全てのデータを表示)