- ベストアンサー
ストアドの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を使っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
説明がイマイチ理解できないのですが・・ 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をストアド処理で実行すれば良いのでは?
その他の回答 (2)
- trictrac
- ベストアンサー率38% (10/26)
データの中がどういう状態かわかりませんが、 こんな感じではいかがですか? 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
お礼
ご解答どうもありがとうございました。 なんとか解決することができました。 どうもありがとうございました。
- ishi7474
- ベストアンサー率32% (71/216)
戻したい値 ・TBL_AのFLD_1,FLD_2,FLD_3 ・TBL_Bのカウント はselect文1,2ですでに求められているように見えますが、どのような出力を希望されているのでしょうか。
補足
すみません、初心者で・・・ select文1,2で求めた値を結合したいのです。 入力パラメータtest1,test2に一致する TBL_AのFLD_1,FLD_2,FLD_3と 入力パラメータtest1,test2に一致する TBL_Bのカウントを1レコードに結合して 出力したいと思っています。
お礼
ご解答どうもありがとうございました。 試行錯誤で色々やっていてお礼が遅れてしまいました。 完成したものはKOROCHANNの書いたsqlとほとんど同じ ものでした。 どうもありがとうございました。