三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

挨拶・自己紹介:「こんな感じ」や「あの、あの」と活舌の悪い、
三流プログラマーのオッサンです
Ken3三流君へ問い合わせ・連絡先:
[Ken3(管理者)へメッセージを送る], [YouTube動画にコメントを書く]
※↑質問・感想,コード修正・作成依頼など気軽に送ってください。

asp083.html 三流君ASP:Select TOP 20 と Select Top n PERCENT で遊ぶ

元の三流解説は、
三流君ASP:Select TOP 20 と Select Top n PERCENT で遊ぶ
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



SQL文 Select TOP 20 でGroup化集計値のTOP20を作成 ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL文 Select TOP 20 でGroup化集計値のTOP20を作成</title>
</head>
<body>
<h1>SQL文 Select TOP 20 でGroup化集計値のTOP20を作成</h1>
test083-1.asp<br>
<hr>
cnt_etc.mdb から訪問されたURLをグループ化して集計、降順に表示<br>
<strong>TOP 20</strong>で訪問者上位20件を表示</b><br>
<font color="red"><strong>Select TOP 20 URL, Count(URL) As URLCNT ~</strong>
<br>と設定してみました</font><br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("cnt_etc.mdb")

  'やっとデータベースを開ける
  db.open

  'お約束のレコードセットの作成 
  'GROUP BY句 で グループ化 Count関数で集計 ORDER BY句で並べ替え
  'TOP20を指定
  strSQL = "Select TOP 20 URL, Count(URL) As URLCNT "
  strSQL = strSQL & "From log "
  strSQL = strSQL & "GROUP BY URL "
  strSQL = strSQL & "ORDER BY Count(URL) DESC"

  'オマケで画面にデータ表示
  Response.Write "<hr>発行する(した)SQL文は<br><B><font color='green'>"
  Response.Write strSQL & "</font></B><br>です<hr>"

  Set rs = db.Execute(strSQL)

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>No.</TD>"
  Response.Write "<TD>URL</TD>"
  Response.Write "<TD>訪問者件数</TD>"
  Response.Write "</TR>"

  'EOFまでループ
  nCNT = 1
  Do While rs.EOF = False   '.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    Response.Write "<TD>" & nCNT & "</TD>"

    Response.Write "<TD><A HREF='" & rs.Fields.Item("URL") & "' Target='_top'>"
    Response.Write rs.Fields.Item("URL") & "</A></TD>"

    Response.Write "<TD ALIGN=RIGHT>" & rs.Fields.Item("URLCNT") & "人</TD>"

    Response.Write "</TR>" & Chr(13) & Chr(10)
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
    'カウンタを増やす
    nCNT = nCNT + 1
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  '開いていたレコードセットを閉じる
  rs.Close

  'データベースも閉じようよ
  db.Close

  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing

%>
<hr>
終了です。<br>
<br>
</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test083-1.asp実行する



Select TOP 30 を 使った ソースコードを紹介する

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL Select TOP 30 で 返って来るレコードセットを30件にする</title>
</head>
<body>
<h1>SQL Select TOP 30 で 返って来るレコードセットを30件にする</h1>
<code>
Set rs = db.Execute("Select TOP 30 * From log ORDER BY WriteTime DESC")
</code><br>
とSQL文を発行してみた<hr>
test083-2.asp<br>
<hr>
<b>ログファイルから最新のデータを表示します。</b><br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("cnt_etc.mdb")

  'やっとデータベースを開ける
  db.open

  'お約束のレコードセットの作成 テーブル名logから全項目(*)を指定
  'ORDER BY WriteTime DESC で書き込み時刻の降順にする
  'Select 30 と 件数を指定しました
  Set rs = db.Execute("Select TOP 30 * From log ORDER BY WriteTime DESC")

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>NO.</TD>"
  Response.Write "<TD>日付</TD>"
  Response.Write "<TD>来てもらった場所</TD>"
  Response.Write "<TD>リンク元</TD>"
  Response.Write "</TR>"

  'EOFまでループ
  nCNT = 1
  Do While rs.EOF = False   '.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    Response.Write "<TD>" & nCNT & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"

    Response.Write "<TD><A HREF='" & rs.Fields.Item("URL") & "' Target='_blank'>"
    Response.Write rs.Fields.Item("URL") & "</A></TD>"

    Response.Write "<TD><A HREF='" & rs.Fields.Item("referrer") & "' Target='_blank'>"
    Response.Write Left(rs.Fields.Item("referrer"), 30) & "</A>...</TD>"

    Response.Write "</TR>" & Chr(13) & Chr(10)
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
    'カウンタを増やす
    nCNT = nCNT + 1
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  '開いていたレコードセットを閉じる
  rs.Close

  'データベースも閉じようよ
  db.Close

  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing

%>
<hr>
終了です。<br>


</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test083-2.asp実行する



SQL文 Select TOP 10 PERCENT を指定 ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL文 Select TOP 10 PERCENT を指定</title>
</head>
<body>
<h1>SQL文 Select TOP 10 PERCENT を指定</h1>
test083-1.asp<br>
<hr>
cnt_etc.mdb から訪問されたURLをグループ化して集計、降順に表示<br>
<strong>TOP 10 PERCENT </strong>で上から10%のデータを表示</b><br>
<font color="red">
<strong>Select TOP 10 PERCENT URL, Count(URL) As URLCNT ~</strong>
<br>と設定してみました</font><br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("cnt_etc.mdb")

  'やっとデータベースを開ける
  db.open

  'お約束のレコードセットの作成 
  'GROUP BY句 で グループ化 Count関数で集計 ORDER BY句で並べ替え
  'Select TOP 10 PERCENTを指定
  strSQL = "Select TOP 10 PERCENT URL, Count(URL) As URLCNT "
  strSQL = strSQL & "From log "
  strSQL = strSQL & "GROUP BY URL "
  strSQL = strSQL & "ORDER BY Count(URL) DESC"

  'オマケで画面にデータ表示
  Response.Write "<hr>発行する(した)SQL文は<br><B><font color='green'>"
  Response.Write strSQL & "</font></B><br>です<hr>"

  Set rs = db.Execute(strSQL)

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>No.</TD>"
  Response.Write "<TD>URL</TD>"
  Response.Write "<TD>訪問者件数</TD>"
  Response.Write "</TR>"

  'EOFまでループ
  nCNT = 1
  Do While rs.EOF = False   '.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    Response.Write "<TD>" & nCNT & "</TD>"

    Response.Write "<TD><A HREF='" & rs.Fields.Item("URL") & "' Target='_top'>"
    Response.Write rs.Fields.Item("URL") & "</A></TD>"

    Response.Write "<TD ALIGN=RIGHT>" & rs.Fields.Item("URLCNT") & "人</TD>"

    Response.Write "</TR>" & Chr(13) & Chr(10)
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
    'カウンタを増やす
    nCNT = nCNT + 1
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  '開いていたレコードセットを閉じる
  rs.Close

  'データベースも閉じようよ
  db.Close

  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing

%>
<hr>
終了です。<br>
<br>
</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test083-3.asp実行する

↑コードの三流解説は、
三流君ASP:Select TOP 20 と Select Top n PERCENT で遊ぶ
を見て、笑ってやってください。



ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~