アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLについてお教え頂けませんでしょうか?

在庫テーブル
・ID
・数量

データ
001,1
001,3
002,3
002,2
002,4
003,2

商品テーブル
・ID

データ
001
002
003
004

やりたいこと:
在庫テーブルには重複しているIDがあります。
商品テーブルには重複しているIDはありません。

在庫テーブルの重複を削除したIDと商品テーブルのIDをinner joinで結びたいと思います。

・select distinct ID FROM 在庫テーブル
・select ID FROM 商品テーブル

この2つのjoin方法がわかりません。

結果として、
001
002
003
を取得したいいです。宜しくお願いします。

ちなみに
select ID from 商品テーブル inner join 在庫テーブル 商品テーブル.ID = exists(select distinct ID from 在庫テーブル)
というコードを書きましたが、動きませんでした・・・抽出データが0件でした・・・

A 回答 (3件)

 質問の例題が、あまりにも省略されている為に、正確な要件が解らなくなってしまっています。


 おそらく、商品テーブルにも在庫テーブルにも、そのほかのフィールドがあるはずですよね。そうで無いと、在庫テーブルはレコードの特定が出来ませんし、商品テーブルに至っては存在価値を疑ってしまいますので・・・

 で、質問の結合方法も、そのほかのフィールドがらみで方法が変わってきそうです。
 本当に、質問内容だけでしたら、一番単純な解は、
select distinct ID from 在庫テーブル
 です。結合の必要なんてありません。

 こんなのも、いちおうあり・・・ですが・・・
 select distinct z.ID from 商品テーブル s join 在庫テーブル z on s.ID=z.ID
 これで、少なくとも、商品テーブルに存在する商品IDのうち、在庫テーブルに存在する商品の重複の無いIDが取得できます。が・・・普通、商品テーブルに存在しない商品IDてのが想像しがたいので、意味があるかどうか・・・

 普通は、この類のテーマだと、
select s.ID, sum(z.数量) from 商品テーブル s join 在庫テーブル z on s.ID=z.ID
group by s.ID
 等とやって、「商品の在庫量が知りたいです」となるんですけど・・・

 さて、いったい何がやりたいのでしょうか?
 「いろいろとやりたいこと」の内容を書かれた方が、的確な答えが返ってくると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。もう一度、自分のやりたいことを再確認して質問させて頂きます。ありがとうございました!

お礼日時:2013/10/10 18:47

どんな要件なのか不明ですが、



> 在庫テーブルの重複を削除したIDと商品テーブルのIDをinner joinで結びたいと思います。
>
> ・select distinct ID FROM 在庫テーブル
> ・select ID FROM 商品テーブル

こういうことかなぁ?

select 商品テーブル.ID
FROM 商品テーブル inner join (select distinct ID FROM 在庫テーブル) T
ON 商品テーブル.ID = T.ID;

これで要件を満たしてますか。

出力結果は、前の方のと同じですが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。もう一度、自分のやりたいことを再確認して質問させて頂きます。ありがとうございました!

お礼日時:2013/10/10 18:47

むしろ



select distinct ID from 在庫テーブル

だけでよいのでは?

もしかして在庫テーブルにあるIDが必ずしも商品テーブルにあるとは
限らないということですか?であれば

select distinct 在庫テーブル.ID from 在庫テーブル
inner join 商品テーブル on 在庫テーブル.ID=商品テーブル.ID

みたいなやり方でしょうか?
    • good
    • 0
この回答へのお礼

ご回答有難うございます。色々やりたい事があり、
select distinct ID from 在庫テーブルや
select distinct 在庫テーブル.ID from 在庫テーブル
inner join 商品テーブル on 在庫テーブル.ID=商品テーブル.ID
では要件を満たせないのです。

お礼日時:2013/10/08 16:53

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

関連するカテゴリからQ&Aを探す