@blog.justoneplanet.info

日々勉強

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キーワードはどちらのデータに空白部分が含まれていても良いかを決めるワードである。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment