演習課題「内部結合する」
右側のコードエリアでは、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 |
期待する出力値
id | name | level | job_id | id | job_name | vitality | strength | agility | intelligence | luck |
---|---|---|---|---|---|---|---|---|---|---|
1 | パイザ | 12 | 6 | 6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
2 | ケン | 7 | 2 | 2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
3 | リン | 1 | 1 | 1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
4 | ユウ | 3 | 3 | 3 | 狩人 | 5 | 5 | 7 | 5 | 4 |
5 | クレア | 10 | 4 | 4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
6 | ショウ | 5 | 2 | 2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
7 | さくら | 7 | 1 | 1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
8 | ジャック | 5 | 4 | 4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
9 | ロック | 12 | 6 | 6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
演習課題「左結合する」
右側のコードエリアでは、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 |
期待する出力値
id | name | level | job_id | id | job_name | vitality | strength | agility | intelligence | luck |
---|---|---|---|---|---|---|---|---|---|---|
1 | パイザ | 12 | 6 | 6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
2 | ケン | 7 | 2 | 2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
3 | リン | 1 | 1 | 1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
4 | ユウ | 3 | 3 | 3 | 狩人 | 5 | 5 | 7 | 5 | 4 |
5 | クレア | 10 | 4 | 4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
6 | ショウ | 5 | 2 | 2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
7 | さくら | 7 | 1 | 1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
8 | ジャック | 5 | 4 | 4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
9 | ロック | 12 | 6 | 6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
10 | じゅん | 1 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
演習課題「右結合する」
右側のコードエリアでは、SQL文で、サンプルデータベースの「players」テーブルのデータを取得することができます。このコードを修正して、「players」テーブルと「jobs」テーブルを右結合で表示するようにしてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
※ playersテーブルのidカラムで昇順に表示してください。
入力される値
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 |
期待する出力値
id | name | level | job_id | id | job_name | vitality | strength | agility | intelligence | luck |
---|---|---|---|---|---|---|---|---|---|---|
NULL | NULL | NULL | NULL | 5 | 僧侶 | 5 | 5 | 3 | 7 | 5 |
1 | パイザ | 12 | 6 | 6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
2 | ケン | 7 | 2 | 2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
3 | リン | 1 | 1 | 1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
4 | ユウ | 3 | 3 | 3 | 狩人 | 5 | 5 | 7 | 5 | 4 |
5 | クレア | 10 | 4 | 4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
6 | ショウ | 5 | 2 | 2 | 盗賊 | 3 | 3 | 8 | 5 | 7 |
7 | さくら | 7 | 1 | 1 | 戦士 | 8 | 8 | 4 | 4 | 3 |
8 | ジャック | 5 | 4 | 4 | 魔法使い | 3 | 2 | 6 | 8 | 6 |
9 | ロック | 12 | 6 | 6 | 勇者 | 10 | 10 | 10 | 10 | 10 |
#06:2つのテーブルを結合しよう
データベースで、複数のテーブルを結合して扱う方法を学んでいきます。リレーショナルデータベースでは、重複したデータのテーブルを分割しておいて、必要に応じて、仮想的な1つの表として扱うことができます。
テーブルの関連付けとは、重複したデータのテーブルを分割しておいて、必要に応じて、仮想的な1つの表として結合して扱う方法です。
-- テーブルを結合して表示する(内部結合)
SELECT * FROM players INNER JOIN jobs ON jobs.id = players.job_id;-- テーブルを結合して表示する(左結合)
SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id;-- テーブルを結合して表示する(右結合)
SELECT * FROM players RIGHT JOIN jobs ON jobs.id = players.job_id;
- 内部結合(INNER JOIN): 両方のテーブルに共通のデータを表示
- 外部結合
- 左結合(LEFT JOIN): 左側テーブルを基準に表示
- 右結合(RIGHT JOIN): 右側テーブルを基準に表示