- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#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(おもしろかった[5],そうでもない[4])
#vote(おもしろかった[6],そうでもない[4])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}