ADO での SELECT 構文 3 の使用
著者:Eve Cole
更新時間:2009-05-30 19:54:33
前回の記事からの続き:
注文方法
ORDER BY 句を使用して、並べ替えフィールドを設定できます。
SQL 式では、通常、ORDER BY 句は最後に配置されます。
降順 (Z~A、9~0) で並べ替える場合は、降順で並べ替える各フィールドの末尾に DESC 単語を追加する必要があります。例えば:
名前の選択
従業員から
給料明細、年齢で注文
[Salary]フィールドが降順でソートされ、[Age]フィールドが昇順でソートされることを示します。
ORDER BY 句の並べ替えられたフィールドには、MEMO フィールド タイプまたは OLE オブジェクト タイプを含めることはできません。そうでない場合は、エラーが発生します。
ORDER BY 句に複数のフィールドが含まれている場合、ORDER BY の後の最初のフィールドが並べ替えに使用されます。次に、このフィールドに同一のデータ レコードがある場合は、2 番目のフィールドを使用して並べ替えが行われます。
グループ化
GROUP BY はクエリ結果の統計を作成します。構文は次のとおりです。
SELECT フィールドリスト
テーブルから
WHERE 基準
[GROUP BY グループフィールドリスト]
WHERE 句を使用すると、カウントしたくないデータを設定でき、HAVING 句を使用すると、すでにカウントされているフィールドをフィルタリングできます。
MEMO フィールド タイプまたは OLE オブジェクト タイプのフィールドに対して統計を作成することはできません。そうでない場合は、エラーが発生します。
たとえば、ASP プログラム rs22.asp は次のとおりです。 [SELECT カテゴリ、カテゴリ別製品グループからの平均 (価格)] GROUP BY を使用してクエリ結果の [カテゴリ] 統計を作成し、各カテゴリの統計を計算します。価格 Avg (価格) を平均するには:
<%
set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "カテゴリ別の製品グループからの平均としてカテゴリを選択、平均(価格)"
Response.Write "<p>Avg(price)"
rs2.Open SqlStr,conn1,1,1
rs2.EOF ではないときに実行します
Response.Write "<BR>" & rs2("kind") & ": " & rs2("average")
rs2.MoveNext
ループ
rs2.Close%>
上記の ASP プログラム rs22.asp の場合、クライアントはブラウザを使用して実行結果を参照し、[カテゴリ] 統計に基づいて平均価格を表示します。
たとえば、ASP プログラム rs22.asp は次のとおりです。 [SELECT カテゴリ、カテゴリ別製品グループからの合計としての合計(数量*価格)] GROUP BY を使用して、クエリの [カテゴリ] 統計を作成します。結果を確認し、各カテゴリをカウントします。合計価格 (数量 * 価格) に数量と価格を掛けます。
<%
set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "カテゴリ別の製品グループから合計としてカテゴリ、合計(数量*価格)を選択"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Sum(quantity*price)"
rs2.EOF ではないときに実行します
Response.Write "<BR>" & rs2("category") & ": " & rs2("total")
rs2.MoveNext
ループ
rs2.Close%>
上記の ASP プログラム rs22.asp では、クライアントのブラウザを使用して実行結果を参照し、[カテゴリ] に基づいた合計価格を表示します。
Groupfieldlist は統計に使用されるフィールドの名前で、最大 10 個のフィールドがあります。
groupfieldlist 内のフィールド名の順序によって、最高レベルから最低レベルまでの統計レベルが決まります。
最後に、たとえば、ASP プログラム rs22.asp は次のとおりです。 [SELECT 名前、件名、Avg (スコア) 平均として 検査から Group By 名前、件名] GROUP BY を使用して、[名前] と [ に基づいてクエリ結果を作成します。 [主題] 統計、各統計 [統計] [平均] スコア Avg (スコア):
<%
set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "名前、件名ごとに試験グループから平均として名前、件名、平均 (スコア) を選択します"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>名前、件名でグループ化"
rs2.EOF ではないときに実行します
Response.Write "<BR>" & rs2("名前") & " " & rs2("件名") & " 平均: " & rs2("平均")
rs2.MoveNext
ループ
rs2.閉じる
%>
上記ASPプログラムrs22.aspは、クライアント側のブラウザを使用して実行結果を閲覧し、[名前]と[件名]に基づく[平均]スコアを表示します。
習ったことがありますか?