電子書籍の厳選無料作品が豊富!

SQLでわからないことがあるので質問させていただきます。

例えばの話ですが在庫テーブルというテーブルがあってそこに商品マスタ
をLEFT JOINする際に

SELECT * 
FROM 在庫テーブル LEFT JOIN 商品マスタ
ON 品番 = 品番

として実行すると返ってくる結果は在庫テーブルの全レコードと
品番で結んだ商品マスタに存在するデータってことですか?
上記のSQLと

SELECT *
FROM 在庫テーブル

で返ってくるレコード件数が違うという時はどういう可能性が考えられるでしょうか?
ちなみに商品マスタの品番レコードはすべてユニークになっていて
色やサイズで品番が複数存在するものではありません。
何回やってもレコード件数が前者のほうが多くなってしまいます。
分かる方がいらしたらぜひ教えていただきたいです。

A 回答 (4件)

もしかすると、「ON」で条件を指定する際、


テーブルの指定をしてないんじゃないですか?


<例1>
SELECT *
FROM 在庫テーブル LEFT JOIN 商品マスタ
ON 在庫テーブル.品番 = 商品マスタ.品番;

または

<例2>
SELECT *
FROM 在庫テーブル A LEFT JOIN 商品マスタ B
ON A.品番 = B.品番;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
無事解決できました。

お礼日時:2010/02/24 12:17

またまたすみません。

先程の修正は間違いです・・・
最初の回答を確認してみて下さい。
    • good
    • 0

すみません先程の回答を修正します。



>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)共に件数は同一でしょうか?
    • good
    • 0

>SELECT * 


>FROM 在庫テーブル LEFT JOIN 商品マスタ
>ON 品番 = 品番
>
>として実行すると返ってくる結果は在庫テーブルの全レコードと
>品番で結んだ商品マスタに存在するデータってことですか?

商品マスタの品番が重複していなければ、
在庫テーブルの全レコードと品番で結んだ
商品マスタに存在するデータを取得できるはずです。


まずは商品マスタの品番が重複していないこと(1)、(2)の
select文を実行して確認して下さい。

(1)select count(品番) from 商品マスタ;
(2)select count(品番) from (select 品番 from 商品マスタ group by 品番);

(1)、(2)共にcount数は同一でしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!