SQL Joins(SQLにおけるテーブル結合)
テーブル結合とは、複数のテーブルから一つのレコードセットをつくり出す。多くのアプリケーションは非常に複雑なテーブル結合を使っている。
サンプルテーブル
personテーブル
| id | name | country_id |
|---|---|---|
| 1 | John | 2 |
| 2 | Mike | 1 |
| 3 | Nick | 99 |
countryテーブル
| id | name |
|---|---|
| 1 | USA |
| 2 | Japan |
| 3 | Canada |
■内部結合(inner join)
内部結合とは、一歩のテーブルに存在するcountry.idが、もう一方のテーブルに含まれていないとき、行の結合が失敗し結果セットから除外される結合である。
SELECT
`person`.`id`,
`person`.`name`,
`country`.`name`
FROM
`person`
INNER JOIN
`country`
ON
`person`.`country_id` = `country`.`id`;
ONキーワードで結合条件「`person`.`country_id` = `country`.`id`」と指定するとことができる。上述の場合、「INNER JOIN」でなく「JOIN」でも結果は等しいが、可読性の問題などが生じるため、結合の種類はSQL文に明記することをお勧めする。
実行結果
| id | name | name |
|---|---|---|
| 1 | John | Japan |
| 2 | Mike | USA |
■左外部結合(left outer join)
外部結合とは、どちらか一方のテーブルに存在する行が、結果セットに含まれる結合である。「left outer join」はFROM節の左側のテーブル(person)に合わせて結合する。以下のようにすると左外部結合ができる。
SELECT
`person`.`id`,
`person`.`name`,
`country`.`name`
FROM
`person`
LEFT OUTER JOIN
`country`
ON
`person`.`country_id` = `country`.`id`;
実行結果
| id | name | name |
|---|---|---|
| 1 | John | Japan |
| 2 | Mike | USA |
| 3 | Nick | NULL |
■右外部結合(right outer join)
「right outer join」はテーブル(country)に合わせて結合する。以下のようにすると右外部結合ができる。
SELECT
`person`.`id`,
`person`.`name`,
`country`.`name`
FROM
`person`
RIGHT OUTER JOIN
`country`
ON
`person`.`country_id` = `country`.`id`;
実行結果
| id | name | name |
|---|---|---|
| 2 | Mike | USA |
| 1 | John | Japan |
| NULL | NULL | Canada |
LEFTキーワードとRIGHTキーワードはどちらのデータに空白部分が含まれていても良いかを決めるワードである。
TrackBack URL :
Comments (0)