外部結合(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 というのもあるけど、
要は基準が逆になって右がメインになる
ということです

コメントを残す

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