複数のテーブルを利用する – mysql

複数のテーブルから抽出したデータを集めるときは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のレコードの全てのデータを表示)



タイトルとURLをコピーしました