// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

SQLはあんま詳しくないので、基礎的なことですが外部結合についてメモっときます。


***サンプルのテーブルと、元データ [#hb9ad6f0]
 mysql> select ITEM_ID,NAME,INITIAL_PRICE from ITEM;
 +---------+--------+---------------+
 | ITEM_ID | NAME   | INITIAL_PRICE |
 +---------+--------+---------------+
 |       1 | 商品1 |        100.45 |
 |       2 | 商品2 |        1600.5 |
 |       3 | 商品3 |        1700.1 |
 +---------+--------+---------------+
 3 rows in set (0.00 sec)
 
 mysql> select BID_ID,ITEM_ID,AMOUNT from BID;
 +--------+---------+--------+
 | BID_ID | ITEM_ID | AMOUNT |
 +--------+---------+--------+
 |      1 |       2 | 1700.5 |
 |      2 |       2 | 1700.5 |
 |      3 |       3 | 1800.1 |
 +--------+---------+--------+
 3 rows in set (0.00 sec)

#ref(rel.png)

このテーブルに対して検索を実行します。

-通常の検索
 mysql> select ITEM.ITEM_ID ,NAME,INITIAL_PRICE,BID_ID,AMOUNT
        from ITEM ,BID where  ITEM.ITEM_ID=BID.ITEM_ID;
 +---------+--------+---------------+--------+--------+
 | ITEM_ID | NAME   | INITIAL_PRICE | BID_ID | AMOUNT |
 +---------+--------+---------------+--------+--------+
 |       2 | 商品2 |        1600.5 |      1 | 1700.5 |
 |       2 | 商品2 |        1600.5 |      2 | 1700.5 |
 |       3 | 商品3 |        1700.1 |      3 | 1800.1 |
 +---------+--------+---------------+--------+--------+
 3 rows in set (0.00 sec)


-外部結合
 mysql> select ITEM.ITEM_ID ,NAME,INITIAL_PRICE,BID_ID,AMOUNT 
        from ITEM  left join BID on  ITEM.ITEM_ID=BID.ITEM_ID;
 +---------+--------+---------------+--------+--------+
 | ITEM_ID | NAME   | INITIAL_PRICE | BID_ID | AMOUNT |
 +---------+--------+---------------+--------+--------+
 |       1 | 商品1 |        100.45 |   NULL |   NULL |BIDにはITEM_ID=1
 |       2 | 商品2 |        1600.5 |      1 | 1700.5 |はないけど検索される
 |       2 | 商品2 |        1600.5 |      2 | 1700.5 |
 |       3 | 商品3 |        1700.1 |      3 | 1800.1 |
 +---------+--------+---------------+--------+--------+
 4 rows in set (0.00 sec)
 
 mysql>

左側(ITEM left join BID)のITEMを基準にしてBIDをくっつけていくのが、左外部結合ですね。ITEMを指しているBIDがなくても、そのITEMは表示されると。でそのITEMのBIDのデータはNULLになるんですね。

で、右外部結合ってのもあるけど、ITEMとBIDを入れ替えれば((ITEM left join BID と BID rifht join ITEMは同じ?))意味は同じかな??

----
この記事は
#vote(おもしろかった[33],そうでもない[17])
#vote(おもしろかった[34],そうでもない[17])
- あああああ -- [[っかっぁああ]] &new{2015-04-09 (木) 17:17:47};
- あああああ -- [[っかっぁああ]] &new{2015-04-09 (木) 17:17:49};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS