1:内部結合(inner join)
例:ユーザー一覧を取得したい!都道府県IDで出力されてもよくわからないので都道府県名も表示したい!
select users.id, users.last_name, users.first_name, prefectures.name from users inner join prefectures on users.prefecture_id = prefectures.id;
※ポイント
まず名字と名前と県IDを取得
select id, last_name, first_name, prefecture_id from users;
次にprefecture_idと都道府県名(prefectures.nane)を結びつける(inner join on)
短く書くこともできる
select u.id, u.last_name,u.first_name, p.name from users as u inner join prefectures as p on u.prefecture_id = p.id;
さらに短く書くこともできる(asを省略)
select u.id, u.last_name,u.first_name, p.name from users u inner join prefectures p on u.prefecture_id = p.id;
さらにさらに短くもできる。(innerを省略)
select u.id, u.last_name,u.first_name, p.name from users u join prefectures p on u.prefecture_id = p.id;
このように変わらず出力される
内部結合+絞り込み
応用
1:顧客一覧を取得したい
2:都道府県 id で出力されてもよくわからないので 都道府県名も表示したい
3:必要な列はユーザー ID、苗字、名前、都道府県名,更に女性だけのデータもほしい
1:select * from users; 2:select * from users as u inner join prefectures as p on u.prefecture_id = p.id;
3:select u.id, u.last_name, u.first_name, p.name from users as u inner join prefectures as p on u.prefecture_id = p.id where u.gender = 2;
応用:2017年1月の東京都に住むユーザーの注文情報一覧を出したい!
取得する列は注文id,注文日時,注文金額合計,ユーザー id,苗字,名前
(東京都prefecture_id=13)
select u.id, u.last_name, u.first_name, o.id, o.order_time, o.amount from orders as o inner join users as u on o.user_id = u.id where u.prefecture_id = 13 and o.order_time>='2017-01-01 00:00:00' and o.order_time < '2017-02-01 00:00:00' order by o.id;