skillup

技術ブログ

Database

自己結合に関して

投稿日:

以前もこのエントリーで学習しましたが、SQLの結合では自己結合という考え方があります。

下記のようなテーブルProductsがあるとします。

name | price
——–+——-
りんご | 100
みかん | 50
バナナ | 80

ここで下記のようなSQLをたたくと

下記のような列が得られます。

name | name
——–+——–
りんご | りんご
りんご | みかん
りんご | バナナ
みかん | りんご
みかん | みかん
みかん | バナナ
バナナ | りんご
バナナ | みかん
バナナ | バナナ

これは3行同士が掛け算されてできた結果でProductsのりんごはProductsの(りんご、みかん、ばなな)と結びついています。※図で書くとわかりやすいかも・・・

ここで例えば下記のようなSQLを書くと

下記ような結果になります。ちょうどりんご-りんごのような同列グループがなくなったわけです。

name | name
——–+——–
りんご | みかん
りんご | バナナ
みかん | りんご
みかん | バナナ
バナナ | りんご
バナナ | みかん

実務でもこの自己結合は比較的見かけますが、SQLを集合として考えないとなかなか難しいと思います。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

MySQLのセキュアな設定

以前SSHの設定についていろいろ書いたんで今回はMySQLに関して。 Contents1 基本的な処方箋(MySQLに限らないかも)2 ホストのアクセスを制限する3 LOCAL INFILEコマンドを …

no image

データクレンジング

リレーショナルデータベースでデータを管理する前に、しなくてはいけないことはデータをデータベースに登録できる形に整形することです。 このことをデータクレンジングといいます。 これを行わずに何も考えずにデ …

no image

正規化について&EXTRACT

Contents1 正規化とは?2 第一正規化3 SQLネタ EXTRACT 正規化とは? 正確な定義は難しいですが、8割ぐらいあっている定義としては「適切なテーブルに分割すること」です。※ただし正確 …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

外部結合 応用編

本日は「達人に学ぶSQL徹底指南書」の外部結合の応用編です。 下記のような3つのテーブルがあるとします。例によってここを使わしてもらってます。 tblsex sex_cd | sex —& …