FC2ブログ

外部結合(LEFT JOIN,RIGHT JOIN)

UPDATE `carts`set item_id=1,count=2 WHERE id=6;
を実行して

SELECT i.item_name, SUM(c.count) FROM my_items i , carts c WHERE i.id=c.item_id GROUP BY c.item_id;
を実行して、もし値が0だとデータが表示されない

この場合、0を表示するには外部結合を使います

ちなみに、いままで実行したのは内部結合で
こちらは
両方のテーブルにデータが存在していないと結合されないので
データがでてこない

外部結合なら、一方のテーブルにデータがあれば必ず表示されるというもの
ゲーム開発とかには使うかも

では、今度は外部結合してみます

SELECT i.item_name, SUM(count) FROM my_items i LEFT JOIN carts c ON i.id=c.item_id GROUP BY c.item_id;
とすると、0で表示されなかった
ブルーベリー がNULLで表示されます

外部結合には
LEFT JOIN ... ON というように使います

書式で書くと
SELECT FROM ... テーブル1 LEFT JOIN テーブル2 ON 結合条件 WHERE ...

テーブル1はメインなので、全部表示
そのうえで
テーブル2で追加データがあれば、表示するというもの

つまり、今回の例なら
FROM my_items i
なので、
my_items は全部表示

LEFT JOIN carts c
なので、
差分で
carts を表示

差分条件は
ON i.id=c.item_id GROUP BY c.item_id;
なので、
id の値が同じものということになります

ちなみに、RIGHT JOIN というのもあるけど、
要は基準が逆になって右がメインになる
ということです
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック