SQLで複数テーブルを結合してデータを取得する

外部結合

今日は複雑なSQLを見る機会があったので、複数テーブルを結合するSQLの書き方についてみてみます。タグ検索を作ったりする場面などで見かけることがある書き方です。

それでは下記のような構造の2つのテーブルを例に検索するSQLを書いてみます。
——————————-
テーブル【bookmark】
カラム
id | user | s_id
1 | 太朗 | 10
2 | 花子 | 12
——————————-
テーブル【site】
カラム
id | url | title
10 | google.com | google
11 | facebook.com | facebook
12 | twitter.com | twitter
——————————-

SELECT 
b.id, s.url, s.title
FROM 
bookmark b, 
site s 
WHERE 
b.s_id = s.id  !ここで結合!
ORDER BY b.id ASC 

結果は下記のようになります。
——————————-
id | user | url | title
1 | 太朗 | google.com | google
2 | 花子 | twitter.com | twitter
——————————-

LEFT JOIN,RIGHT JOINを使っても同じことができたり、上記のやり方と組み合わせて複雑な検索条件を実装することも可能になります。

  • LEFT JOIN ・・・左側に指定された表のすべての行が表示される
  • RIGHT JOIN ・・・右側に指定された表のすべての行が表示される

このような結合のことを「外部結合」というらしいです。