Classic ASP のテストページです。
情報が古いので参考程度に読んだりテストしてみてください。
三流君(TOP)
/ASPで遊ぶ
/ASP記事一覧を見る
分類:
[Form関係]
/DB系ADOを使い(
[Mdb接続]
[CSV接続]
[Excel接続])
/[ASPでTextFileを操作]
/[VBScript関数ほか]
SQL Count関数を使用したサブクエリーを埋め込み順位を求める
Count関数を使用したサブクエリーを埋め込み、
顧客別のコード順に順位を振ってみます
作成するSQL文↓
strSQL = "Select ID, 顧客, 購入商品, "
strSQL = strSQL & " (Select Count(*) From T_DATA AS T_TEMP "
strSQL = strSQL & " Where T_TEMP.顧客 = T_DATA.顧客 "
strSQL = strSQL & " And T_TEMP.購入商品 < T_DATA.購入商品) AS 順位"
strSQL = strSQL & " From T_DATA"
発行するSQL文
Select ID, 顧客, 購入商品, (Select Count(*) From T_DATA AS T_TEMP Where T_TEMP.顧客 = T_DATA.顧客 And T_TEMP.購入商品 < T_DATA.購入商品) AS 順位 From T_DATA
ID | 顧客 | 購入商品 | 順位 |
---|
1 | 顧客1 | 商品A | 0 |
2 | 顧客1 | 商品B | 1 |
3 | 顧客2 | 商品B | 0 |
4 | 顧客2 | 商品C | 1 |
5 | 顧客3 | 商品A | 0 |
6 | 三流君 | VBA解説本 | 3 |
7 | 三流君 | DVD2005年横浜優勝 | 1 |
8 | 三流君 | ASP入門 | 0 |
9 | 三流君 | SQLの技 | 2 |
↑なんとか顧客別に順位を振れたのかな
↓テストデータ↓
DB内のデータを確認
DB:db105.mdb
確認用に発行したSQL:Select * From T_DATA
ID | 顧客 | 購入商品 |
---|
1 | 顧客1 | 商品A |
2 | 顧客1 | 商品B |
3 | 顧客2 | 商品B |
4 | 顧客2 | 商品C |
5 | 顧客3 | 商品A |
6 | 三流君 | VBA解説本 |
7 | 三流君 | DVD2005年横浜優勝 |
8 | 三流君 | ASP入門 |
9 | 三流君 | SQLの技 |
Countを使用したサンプル(ソースの紹介)
詳細解説は[http:/asp/backno/asp105.html]を見てください
下記、/cgi-bin/test/test105-1.aspのソース(中身)です
|
Count を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードはCount です。
<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL Count関数を使用したサブクエリーを埋め込み順位を求める</title>
</head>
<body>
<h1>SQL Count関数を使用したサブクエリーを埋め込み順位を求める</h1>
Count関数を使用したサブクエリーを埋め込み、<br>
顧客別のコード順に順位を振ってみます<br>
作成するSQL文↓<br>
<pre>
strSQL = "Select ID, 顧客, 購入商品, "
strSQL = strSQL & " (Select Count(*) From T_DATA AS T_TEMP "
strSQL = strSQL & " Where T_TEMP.顧客 = T_DATA.顧客 "
strSQL = strSQL & " And T_TEMP.購入商品 < T_DATA.購入商品) AS 順位"
strSQL = strSQL & " From T_DATA"
</pre>
<hr>
<%
'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
Set db=Server.CreateObject("ADODB.Connection")
'データアクセスにはJet.OLEDB.4.0を使うことを設定
db.Provider = "Microsoft.Jet.OLEDB.4.0"
'次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
db.ConnectionString = Server.MapPath("db105.mdb")
db.open 'データベースを開く
'
strSQL = "Select ID, 顧客, 購入商品, "
strSQL = strSQL & " (Select Count(*) From T_DATA AS T_TEMP "
strSQL = strSQL & " Where T_TEMP.顧客 = T_DATA.顧客 "
strSQL = strSQL & " And T_TEMP.購入商品 < T_DATA.購入商品) AS 順位"
strSQL = strSQL & " From T_DATA"
Response.Write "発行するSQL文<br>"
Response.Write Server.HTMLEncode(strSQL) & "<HR>"
Set rs = db.Execute(strSQL)
'データの表示をテーブルで行う
Response.Write "<TABLE Border='1'>"
'見出しを(フィールド名を)そのまま書き込む
Response.Write "<TR>"
For Each fld_A In Rs.Fields 'フィールドのアイテムに対してループ
Response.Write "<TH>" & fld_A.Name & "</TH>"
'↑.Nameでフィールド名を表示する
Next
Response.Write "</TR>"
'お約束のEOFまでループは(データが無くなるまでループ)、
Do While rs.EOF = False 'レコードセットの.EOFがFalseの間
Response.Write "<TR>" '内容を表示する
For Each fld_A In Rs.Fields 'フィールドのアイテムに対してループ
Response.Write "<TD>" & fld_A.Value & "</TD>"
'↑.Valueでフィールドの値を表示する
Next
Response.Write "</TR>"
'次のレコードにポインタを移動する
rs.MoveNext 'これを忘れると悲惨なことに、、、
Loop
Response.Write "</TABLE>" 'テーブルは終わりです
'後始末
rs.Close '開いていたレコードセットを閉じる
db.Close 'データベースも閉じようよ
Set db = Nothing 'お行儀よくオブジェクトも開放しましょう
%>
<hr>
↑なんとか顧客別に順位を振れたのかな<br>
↓テストデータ↓<br>
</body>
</html>
|
|
Googleで関連項目を検索する
[キーワード:Count] と サンプル|解説|Dim|Set で検索
↓で検索して他のページも確認してみてください。
あれ?私のページが検索に載ってない(笑)一度お試しを(私のページに、また戻ってきてね(爆))
[Topへ戻る]
−−>[ASP系のTOPへ戻る]
−−>[記事一覧を見る]
リンク 三流君 ASP系 の 解説を項目ごとにまとめてみました
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[永遠の下書き日記?]← 恥ずかしいのであまり載せてないけど・・・
[ひとりで掲示板?] ←一人で?掲示板?ぉぃぉぃ
[Topへ戻る]
−−>[ASP系のTOPへ戻る]
−−>[記事一覧を見る]
現在時刻は、2022/05/23 11:55:18です。