- ベストアンサー
JSPで複数テーブルのSQL実行後に値を送る方法とは?
- JSPで複数テーブルのSQLを実行した後、値を送る方法について教えてください。
- JSPでUNION ALLを使用してSQLを実行し、テーブルの「番号」と「テーブル名」を送信したいですが、どのように記述すればいいのか分かりません。
- また、番号はオートナンバーで1から順に振られています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
JAVA上の制限より、SQLパーサの制限が先ですね。 DBによりますが、oracleなら32767バイトまでです。 ただ、そんなSQL文をJSPにべたべた書くか? というのは疑問ではあります。 そこまでこったことをするのなら、JSPだけじゃなく、外部ライブラリを呼ぶ形で結果をもらった方がいいかもしれませんね。
その他の回答 (1)
- PED02744
- ベストアンサー率40% (157/390)
> 説明が分かりにくいかもしれませんが うん。。。全然わからない。 <% %>で囲まれた部分はサーバ側で動作するもので、通常タグはクライアント側にフォワードされるものだから、渡すという言葉の意味が理解できないです。 <form>タグはたくさんできてしまっていいということですか? while(rs.next())の結果は複数あるので、formがたくさんできちゃいますが、いいのでしょうか。 それなら、SELECTで"*"を使わずに、実際の必要なカラム名を指定するように、 ("SELECT 'T_2005' as tname, seq, year, number, add FROM T_2005 where ID='"+ str +"' union all SELECT 'T_2006' as tname, seq, year, number, add FROM T_2006 where ID='"+ str +"' union all SELECT 'T_2007' as tname, seq, year, number, add FROM T_2007 where ID='"+ str +"'"); とでもして、<%=rs.getString("tname")%> でテーブル名が、帰ってくるからそれをつかえばよいのでは? ※DBが書かれていないので方言があるかもしれませんが。
補足
やっぱり分かりませんでしたか・・・ すみません。。。 クライアント側にフォワードされると言う言い方をすればよかったですね。 知識が未熟で言葉が思いつきませんでした。 formはたくさんできちゃってもいいです! >("SELECT 'T_2005' as tname, seq, year, number, add FROM T_2005 where ID='"+ str +"' union all SELECT 'T_2006' as tname, seq, year, number, add FROM T_2006 where ID='"+ str +"' union all SELECT 'T_2007' as tname, seq, year, number, add FROM T_2007 where ID='"+ str +"'"); この様なやり方があるんですね?なるほど! テーブルは例で書いたのですが本当はDB1つにつき50カラム程あります。 長いSQLでも特に問題のないものなのでしょうか?? たびたび申し訳ございません。
お礼
ありがとうございます! >ただ、そんなSQL文をJSPにべたべた書くか? おっしゃるとおりかと思います。。。 タグライブラリとか探してみます☆ 本当に参考になりました! ありがとうございました♪