• ベストアンサー

ストアドのselect文で別テーブルのカウントを取得するには

こんばんは。 以下のようなことをするのにどう記述していいのか わかりません。 入力パラメータ test1,test2に一致するテーブル1のレコードの 項目1と項目2の値と test1,test2に一致するテーブル2のレコードの カウントを 返したいと考えていますがどう記述したら テーブル2のカウントを返せるのかわかりません。 以下、考え中の内容を記述したものです。 テーブルTBL_AとテーブルTBL_Bがある。 TBL_Aの項目はFLD_1,FLD_2,FLD_3 TBL_Bの項目はFLD_1,FLD_2,FLD_3,FLD_4 TBL_AとTBL_Bには同一のフィールドFLD_1,FLD_2があり、 select FLD_1,FLD_2,FLD_3 FROM TBL_A WHERE FLD_1 = test1 AND FLD_2 = test2(select文1) 上記のSQLでTBL_AのFLD_1,FLD_2を取得する ここに、 select count(*) FROM TBL_B WHERE FLD_1 = test1 AND FLD_2 = test2(select文2) このselect文2で取得した値を select文1に接続して値を戻したいのですが やり方がわかりません。 戻したい値はTBL_AのFLD_1,FLD_2,FLD_3とTBL_Bのカウントです。 お分かりになる方教えてください。よろしくお願いします。 なおoracleは9iを使っています。

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

  • ベストアンサー
回答No.2

説明がイマイチ理解できないのですが・・ select (select count(*) from TBL_A where FLD_1=test1 and FLD_2=test2) TBL_A_COUNT, (select count(*) from TBL_B where FLD_1=test1 and FLD_2=test2) TBL_B_COUNT from dual; と言った感じのSQLをストアド処理で実行すれば良いのでは?

mugi-cha
質問者

お礼

ご解答どうもありがとうございました。 試行錯誤で色々やっていてお礼が遅れてしまいました。 完成したものはKOROCHANNの書いたsqlとほとんど同じ ものでした。 どうもありがとうございました。

その他の回答 (2)

  • trictrac
  • ベストアンサー率38% (10/26)
回答No.3

データの中がどういう状態かわかりませんが、 こんな感じではいかがですか? select C.FLD_1 , C.FLD_2 , C.FLD_3 , D.CNT from TBL_A C ( select FLD_1, FLD_2, count(B.*) CNT from TBL_B where FLD_1 = test1 and FLD_2 = test2 group by FLD_1, FLD_2 ) D where D.FLD_1 = C.FLD_1 and D.FLD_2 = C.FLD_2

mugi-cha
質問者

お礼

ご解答どうもありがとうございました。 なんとか解決することができました。 どうもありがとうございました。

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.1

戻したい値 ・TBL_AのFLD_1,FLD_2,FLD_3 ・TBL_Bのカウント はselect文1,2ですでに求められているように見えますが、どのような出力を希望されているのでしょうか。

mugi-cha
質問者

補足

すみません、初心者で・・・ select文1,2で求めた値を結合したいのです。 入力パラメータtest1,test2に一致する TBL_AのFLD_1,FLD_2,FLD_3と 入力パラメータtest1,test2に一致する TBL_Bのカウントを1レコードに結合して 出力したいと思っています。