- ベストアンサー
SQL LEFT JOINについての質問
- SQLでのLEFT JOINについて質問があります。在庫テーブルと商品マスタの結合を例にして説明します。
- LEFT JOINを使用すると、在庫テーブルの全レコードと品番で結んだ商品マスタに存在するデータが返ってきます。
- しかし、在庫テーブルと商品マスタの結合をせずに在庫テーブルのみをSELECTした場合、レコード件数が異なる可能性があります。これは何か原因がある可能性があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もしかすると、「ON」で条件を指定する際、 テーブルの指定をしてないんじゃないですか? <例1> SELECT * FROM 在庫テーブル LEFT JOIN 商品マスタ ON 在庫テーブル.品番 = 商品マスタ.品番; または <例2> SELECT * FROM 在庫テーブル A LEFT JOIN 商品マスタ B ON A.品番 = B.品番;
その他の回答 (3)
- ks0902
- ベストアンサー率85% (6/7)
またまたすみません。先程の修正は間違いです・・・ 最初の回答を確認してみて下さい。
- ks0902
- ベストアンサー率85% (6/7)
すみません先程の回答を修正します。 >SELECT * >FROM 在庫テーブル LEFT JOIN 商品マスタ >ON 品番 = 品番 > >として実行すると返ってくる結果は在庫テーブルの全レコードと >品番で結んだ商品マスタに存在するデータってことですか? 商品マスタの品番が重複していなければ、 在庫テーブルの全レコードと品番で結んだ 商品マスタに存在するデータを取得できるはずです。 まずは商品マスタの品番が重複していないこと(1)、(2)の select文を実行して確認して下さい。 (1)select count(品番) as 件数 from 商品マスタ; (2)select sum(件数) as 件数 from (select count(品番) as 件数 from 商品マスタ group by 品番); (1)、(2)共に件数は同一でしょうか?
- ks0902
- ベストアンサー率85% (6/7)
>SELECT * >FROM 在庫テーブル LEFT JOIN 商品マスタ >ON 品番 = 品番 > >として実行すると返ってくる結果は在庫テーブルの全レコードと >品番で結んだ商品マスタに存在するデータってことですか? 商品マスタの品番が重複していなければ、 在庫テーブルの全レコードと品番で結んだ 商品マスタに存在するデータを取得できるはずです。 まずは商品マスタの品番が重複していないこと(1)、(2)の select文を実行して確認して下さい。 (1)select count(品番) from 商品マスタ; (2)select count(品番) from (select 品番 from 商品マスタ group by 品番); (1)、(2)共にcount数は同一でしょうか?
お礼
回答ありがとうございます。 無事解決できました。