• 締切済み

アルゴリズムがわからない

データベースから値を取得するコードを作っているのですがアルゴリズムがよくわからなくて困っています。 class name _____ A   山田 A   鈴木 A   高橋 B   佐藤  C   山本 C   田中 _____ というデータからブラウザへ <table><tr> <th>A</th><td>山田</td><td>鈴木</td><td>高橋</td> </tr></table> <table><tr> <th>B</th><td>佐藤</td> </tr></table> <table><tr> <th>C</th><td>山本</td><td>田中</td> </tr></table> というふうに出力したいんですがよい方法を教えてください。

みんなの回答

noname#85865
noname#85865
回答No.3

kumagoro-さんの指摘のとおり、パッと見て回答したのでSQLの文が間違っていました。 kumagoro-さんの回答のようにしたほうが良いと思います。 それで、補足なのですが、kumagoro-さんの回答では A 山田 鈴木 高橋 A 山田 鈴木 高橋 A 山田 鈴木 高橋 B 佐藤 C 山本 田中 C 山本 田中 と表示されるのでは? sql1 = "SELECT class FROM TableName ORDER BY class"の部分は Distinctを加え重複データを表示しないようにするか、group by でグループ化しないといけないのではないでしょうか。 sql1 = "SELECT DISTINCT class FROM TableName ORDER BY class" sql1 = "SELECT class FROM TableName GROUP BY class ORDER BY class" 間違っていたらごめんなさい。

  • kumagoro-
  • ベストアンサー率57% (36/63)
回答No.2

ichanさんの回答では A 山田 A 鈴木 A 高橋 B 佐藤 C 山本 C 田中 となりますよね。 ですが、arusuさんは A 山田 鈴木 高橋 B 佐藤 C 山本 田中 としたいのですね? それでしたら以下のようにしてみてはいかがでしょうか? (注)レコードセットを開く部分は省略してあります。rs1にはsql1が、rs2にはsql2が対応すると考えて下さい。 sql1 = "SELECT class FROM TableName ORDER BY class" Do Until rs1.EOF   Response.Write "<TABLE>"   Response.Write "<TR>"   Response.Write "<TH>" & rs1("class") & "</TH>"   sql2 = "SELECT name FROM TableName WHERE class = '" & rs1("class") & "'"   Do Until rs2.EOF     Response.Write "<TD>" & rs2("name") & "</TD>"     rs2.MoveNext   Loop   rs2.Close   Set rs2 = Nothig   Response.Write "</TR>"   Response.Write "</TABLE>"   rs1.MoveNext Loop rs1.Close Set rs1 = Nothig

noname#85865
noname#85865
回答No.1

データベースのテーブルの値を表示させたいということですが、データベースへの接続はうまくいっているのでしょうか?DBの種類やサーバーの構成(WEBサーバーとDBサーバーが別れているとか)の環境の説明をしてもらったほうが良いとは思いますが・・・ 接続がうまくいっているとしたら、ASP内のソースの問題ですね。 僕の場合ですが、WEBサーバーとDB(オラクル)サーバーが別の構成です。 global.asa内に、DB接続用のApplication変数を設定します。 Sub Application_OnStart Application("ORA")="Provider=MSDAORA.1;Password=パスワーード;User ID=ユーザーID;Data Source=DBサーバー名" Application("ORAR")="領域名" End Sub ここで、WEBのディレクトリに入ってきたときに、DBとの接続に必要な情報をApplibcation変数に代入しておきます。 ********ここまでglobal.asa************************* データを表示させたいASPページ内で <%@ Language=VBScript %> <% '【テーブルデータ一覧】 '---DB接続 Set OraDB = Server.CreateObject("ADODB.Connection") OraDB.Open Application("ORA") %> <HTML> <HEAD></HEAD> <BODY><TABLE> <% '---SQL分の作成、 sSql="select フィールド1,フィールド2 from " _ & Application("ORAR") & ".テーブル名" '---SQLの実行、レコードセットを用意 set rs=OraDB.Execute(sSql) '---SQL実行の結果レコードがあれば、レコードの先頭に行きループ開始 if rs.eof=false then rs.movefirst do while rs.eof=false '---レコードの最後までResponse.writeでデータを書き出し、次のレコードへ移動する。 Response.write "<TR><TD>" & rs("フィールド1") & "</TD>" Response.write "<TD>" & rs("フィールド2") & "</TD></TR>" rs.movenext loop else Response.write "レコードがありません" end if '---レコードセットを開放します。 set rs=nothing %> </TABLE> </BODY> <% '---データベースとの接続終了 set OraDB=nothing %> </HTML> わかりにくいかもしれませんけど、参考までに・・・

arusu
質問者

お礼

みなさんご解答ありがとうございました。大変参考になりました。

関連するQ&A