- ベストアンサー
inner joinでサブクエリの使い方を学ぼう
- 在庫テーブルと商品テーブルのIDを結合する方法について教えてください。
- 在庫テーブルの重複したIDを削除し、商品テーブルと結合したいです。
- 現在のコードは正しく動作していないようです。抽出データが0件です。
- みんなの回答 (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 等とやって、「商品の在庫量が知りたいです」となるんですけど・・・ さて、いったい何がやりたいのでしょうか? 「いろいろとやりたいこと」の内容を書かれた方が、的確な答えが返ってくると思います。
その他の回答 (2)
- hatena1989
- ベストアンサー率87% (378/433)
どんな要件なのか不明ですが、 > 在庫テーブルの重複を削除した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; これで要件を満たしてますか。 出力結果は、前の方のと同じですが。
お礼
ご回答ありがとうございます。もう一度、自分のやりたいことを再確認して質問させて頂きます。ありがとうございました!
- yambejp
- ベストアンサー率51% (3827/7415)
むしろ select distinct ID from 在庫テーブル だけでよいのでは? もしかして在庫テーブルにあるIDが必ずしも商品テーブルにあるとは 限らないということですか?であれば select distinct 在庫テーブル.ID from 在庫テーブル inner join 商品テーブル on 在庫テーブル.ID=商品テーブル.ID みたいなやり方でしょうか?
お礼
ご回答有難うございます。色々やりたい事があり、 select distinct ID from 在庫テーブルや select distinct 在庫テーブル.ID from 在庫テーブル inner join 商品テーブル on 在庫テーブル.ID=商品テーブル.ID では要件を満たせないのです。
お礼
ご回答ありがとうございます。もう一度、自分のやりたいことを再確認して質問させて頂きます。ありがとうございました!