演習課題「内部結合で、名前と職業を表示」
右側のコードエリアでは、SQL文で、サンプルデータベースの「players」テーブルのデータを取得することができます。このコードを修正して、「players」テーブルと「jobs」テーブルを内部結合し、名前とレベルと職業名を表示するようにしてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
入力される値
players
id | name | level | job_id |
---|---|---|---|
1 | パイザ | 12 | 6 |
2 | ケン | 7 | 2 |
3 | リン | 1 | 1 |
4 | ユウ | 3 | 3 |
5 | クレア | 10 | 4 |
6 | ショウ | 5 | 2 |
7 | さくら | 7 | 1 |
8 | ジャック | 5 | 4 |
9 | ロック | 12 | 6 |
10 | じゅん | 1 | NULL |
jobs
id | job_name | vitality | strength | agility | intelligence | luck |
---|---|---|---|---|---|---|
1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
3 | 狩人 | 5 | 5 | 7 | 5 | 4 |
4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
5 | 僧侶 | 5 | 5 | 3 | 7 | 5 |
6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
期待する出力値
name | level | job_name |
---|---|---|
パイザ | 12 | 勇者 |
ケン | 7 | 盗賊 |
リン | 1 | 戦士 |
ユウ | 3 | 狩人 |
クレア | 10 | 魔法使い |
ショウ | 5 | 盗賊 |
さくら | 7 | 戦士 |
ジャック | 5 | 魔法使い |
ロック | 12 | 勇者 |
演習課題「左結合で、レベル順に表示」
右側のコードエリアでは、SQL文で、サンプルデータベースの「players」テーブルのデータを、レベルの大きい方から表示されます。
このコードを修正して、「players」テーブルと「jobs」テーブルを左結合し、名前とレベルと職業名を表示するようにしてください。このとき、レベルの大きい方から並べ替えてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
入力される値
players
id | name | level | job_id |
---|---|---|---|
1 | パイザ | 12 | 6 |
2 | ケン | 7 | 2 |
3 | リン | 1 | 1 |
4 | ユウ | 3 | 3 |
5 | クレア | 10 | 4 |
6 | ショウ | 5 | 2 |
7 | さくら | 7 | 1 |
8 | ジャック | 5 | 4 |
9 | ロック | 12 | 6 |
10 | じゅん | 1 | NULL |
jobs
id | job_name | vitality | strength | agility | intelligence | luck |
---|---|---|---|---|---|---|
1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
3 | 狩人 | 5 | 5 | 7 | 5 | 4 |
4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
5 | 僧侶 | 5 | 5 | 3 | 7 | 5 |
6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
期待する出力値
name | level | job_name |
---|---|---|
パイザ | 12 | 勇者 |
ロック | 12 | 勇者 |
クレア | 10 | 魔法使い |
ケン | 7 | 盗賊 |
さくら | 7 | 戦士 |
ショウ | 5 | 盗賊 |
ジャック | 5 | 魔法使い |
ユウ | 3 | 狩人 |
リン | 1 | 戦士 |
じゅん | 1 | NULL |
#07:結合したテーブルを操作しよう
結合したテーブルでも、データベースに対する基本操作を実行できます。ここでは、特定のカラムだけ表示したり、条件に合った行だけ表示したりというように、結合したテーブルで、いくつかの基本操作を試してみましょう。
-- 結合したテーブルを操作する
SELECT * FROM players INNER JOIN jobs ON jobs.id = players.job_id;-- 結合したテーブルで、指定カラムだけ表示
SELECT name, level, vitality FROM players INNER JOIN jobs ON jobs.id = players.job_id;-- 結合したテーブルで、条件に合った行だけ表示
SELECT name, level, strength FROM players INNER JOIN jobs ON jobs.id = players.job_id WHERE strength >= 5;-- 職業ごとに人数を集計する
SELECT job_id, job_name, COUNT(*) FROM players INNER JOIN jobs ON jobs.id = players.job_id GROUP BY job_id;