2つのクエリを使う:サブクエリ
クエリの中に他のクエリを入れることができる。これを、サブクエリと言う。
【書き方例】
prayerテーブルで、アシタカの得点より高い点数の選手を検索する
SELECT name
FROM players
WHERE goals > ( ・・・ ②
SELECT name
FROM players
WHERE name = “アシタカ” ・・・ ①
);
- ( )内でアシタカの得点数を算出
- アシタカの点数より高い点数の選手を検索
【サブクエリのポイント】
- ( )内にセミコロン;は不要
- サブクエリが実行された後、クエリが実行される
データを読みやすくする AS
【ASの使い方】
SELECT goals AS “アシタカの得点数”
FROM players
WHERE name = “アシタカ”;
- 「カラム名 AS “名前”」で、カラム名に定義する名前を指定する
- リスト
テーブルを紐づける
テーブル同士を一緒に使うためには、外部キーが設定されたカラムと主キーが設定されたカラムを用意する。
テーブルを紐づけることで管理しやすくなる。
テーブルの結合 JOIN
JOINは複数のテーブルを1つに結合したいときに使う
結合したテーブルは1つのテーブルとしてデータを取得できる
【書き方】
SELECT*
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名= テーブルB.カラム名;
【書き方例】
playersテーブルのcountry_idとcountriesテーブルのidを紐づけて結合する
SELECT *
FROM players
JOIN countrys
ON players.cocuntry_id = countrys.id;
- 実行順序は、まずJOINが実行され、その後SELECTが実行される
- 外部キーがNULLのレコードは、実行結果に表示されない
複数テーブルでのカラム指定
複数のテーブルに同じカラム名が存在するときは、「テーブル名.カラム名」で指定する
【書き方例】
SELECT players.name, countrys.name
FROM players
JOIN countrys
ON players.country_id = country.id;
- WHERE内でも使える
↓ここまで習ったこと全体の実行順序
1 | テーブルの指定 | FROM |
2 | 結合 | JOIN、ON |
3 | 取得条件 | WHERE |
4 | グループ化 | GROUP BY |
5 | 関数 | SUM、AVG、COUNT、MIN、MAX |
6 | HAVING | HAVING |
7 | 検索 | SELECT、DISTINCT |
8 | 順序 | ORDER BY |
9 | LIMIT | LIMIT |
NULLの場合の取得 LEFT JOIN
LEFT JOINを使うことで、FROMで指定したテーブルのレコードを全て取得する。
外部キーがNULLのレコードもNULLのまま実行結果に表示される
3つ以上のテーブル結合
JOINは1つのクエリで、複数回使用可能。
JOINを複数回使用しても、FROMは1度だけ書けば大丈夫なので注意。
【書き方例】
SELECT *
FROM players
JOIN countries
ON players.country_id = country.id
LEFT JOIN teams
ON players.previous_team_id = teams.id ;
コメント