こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

Oracle上の2つのテーブルからの条件でマッチする件数をSQLで作成しています。

内容としては、テーブルAの区分=1 かつ テーブルBの種別がスペースの件数です。
テーブルAの該当するデータは10件中3件、テーブルBの該当するデータは50件中15件で、本来両方がマッチするのは2件です。

SELECT COUNT(*) FROM テーブルA,テーブルB WHERE テーブルA.区分 = '1' AND テーブルB.種別 = ' ' ;

上記のSQL文で件数をカウントしたのですが、どうも結果では30件とカウントされてしまいます。
なんとか2件として結果を出したく、参考資料を調べているところなのですが、今のところ参考になる文献が見つからず悩んでます。もし簡単にカウントできるSQLがあったり、分かる方がいれば手助けして頂きたいと思い、今回投稿しますのでご教授賜りたく思います。よろしくお願いします。

投稿日時 - 2011-07-07 14:57:37

QNo.6860328

すぐに回答ほしいです

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

テスト環境が手元にあるようなら実際に試した方が話が早いでしょう。

SELECT COUNT(*)
FROM テーブルA,テーブルB
WHERE テーブルA.会社CD = テーブルB.会社CD
AND テーブルA.型式CD = テーブルB.型式CD
AND テーブルA.区分 = '1'
AND テーブルB.種別 = ' ' ;

投稿日時 - 2011-07-07 19:48:06

お礼

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

投稿日時 - 2011-07-08 09:12:08

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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.種別 = ' ' ;

のようになるでしょう。

投稿日時 - 2011-07-07 16:15:59

補足

早速回答して頂き、ありがとうございました。


結合部の WHERE テーブルA.ある属性 = テーブルB.ある属性 ですが、
キーとなる項目が会社CD+型式CDのセットでしているのですが、
データでは分割管理されています。
テーブルAが、会社CD,型式CD,区分,・・・、
テーブルBが会社CD,型式CD,種別,・・・といった感じです。

この場合、 WHERE テーブルA.ある属性 = テーブルB.ある属性 のところは、
会社CDと型式CDをAND条件で指定することは可能なのでしょうか?

初歩的な質問になって申し訳ありませんが、可能でしたら教えてください。
よろしくお願いします。

投稿日時 - 2011-07-07 18:08:06

あなたにオススメの質問