• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数テーブルでの件数検索について)

複数テーブルでの件数検索について

このQ&Aのポイント
  • Oracle上の2つのテーブルからの条件でマッチする件数をSQLで作成しています。
  • テーブルAの区分=1かつテーブルBの種別がスペースの件数をカウントするSQL文を実行しています。
  • 結果では30件とカウントされてしまい、本来は2件のマッチするはずです。簡単にカウントできるSQLや参考文献が見つからず悩んでいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

テスト環境が手元にあるようなら実際に試した方が話が早いでしょう。 SELECT COUNT(*) FROM テーブルA,テーブルB WHERE テーブルA.会社CD = テーブルB.会社CD AND テーブルA.型式CD = テーブルB.型式CD AND テーブルA.区分 = '1' AND テーブルB.種別 = ' ' ;

NH599
質問者

お礼

今朝テストしてみて、問題なく件数カウントできました。 複数テーブルでの仕掛けは初めてだったのですが、参考になりました。 今後も使えそうなツールですので、有効活用させていただきます。 また分からないことありましたら、ぜひともご教授よろしくお願いします。 ありがとうございました。

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

テーブルAの行とテーブルBの行を結合していません。 SELECT COUNT(*) FROM テーブルA,テーブルB WHERE テーブルA.ある属性 = テーブルB.ある属性 AND テーブルA.区分 = '1' AND テーブルB.種別 = ' ' ; あるいは SELECT COUNT(*) FROM テーブルA JOIN テーブルB ON テーブルA.ある属性 = テーブルB.ある属性 WHERE テーブルA.区分 = '1' AND テーブルB.種別 = ' ' ; のようになるでしょう。

NH599
質問者

補足

早速回答して頂き、ありがとうございました。 結合部の WHERE テーブルA.ある属性 = テーブルB.ある属性 ですが、 キーとなる項目が会社CD+型式CDのセットでしているのですが、 データでは分割管理されています。 テーブルAが、会社CD,型式CD,区分,・・・、 テーブルBが会社CD,型式CD,種別,・・・といった感じです。 この場合、 WHERE テーブルA.ある属性 = テーブルB.ある属性 のところは、 会社CDと型式CDをAND条件で指定することは可能なのでしょうか? 初歩的な質問になって申し訳ありませんが、可能でしたら教えてください。 よろしくお願いします。