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

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

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

asp077.html 三流君ASP:SQL AS演算子で別名管理

元の三流解説は、
三流君ASP:SQL AS演算子で別名管理
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>Null AS DUMMY商品名とダミーの項目を作り列数を合わせる</title>
</head>
<body>
<h1>Null AS DUMMY商品名とダミーの項目を作り列数を合わせる</h1>
<pre>
UNIONで表をつなげる時、列数が合わないとエラーになるので、
Null AS DUMMY商品名とダミーの項目を作り列数を合わせる

Select T_月別売上.商品CD, T_商品.商品名,
 売上4,売上5,売上6,売上7,売上8,売上9
  From T_月別売上, T_商品
   Where T_月別売上.商品CD = T_商品.商品CD
UNION ALL
Select Left([T_月別売上.商品CD], 1) & 'ZZZZ' AS GroupCD
 , Null AS Dummy商品名
 , Sum([売上4]) , Sum([売上5]) , Sum([売上6])
 , Sum([売上7]) , Sum([売上8]) , Sum([売上9])
  From T_月別売上, T_商品
   Where T_月別売上.商品CD = T_商品.商品CD
    Group By Left([T_月別売上.商品CD], 1) & 'ZZZZ'
Order By T_月別売上.商品CD
</pre>
と、SQL文を作成してみた。
<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("db072.mdb")
  db.open 'データベースを開く

  'T_月別売上 から 商品コード、売上4~9を取得する
  strSQL = "Select T_月別売上.商品CD, T_商品.商品名,"
  strSQL = strSQL & " 売上4,売上5,売上6,売上7,売上8,売上9"
  strSQL = strSQL & " From T_月別売上, T_商品 "
  strSQL = strSQL & " Where T_月別売上.商品CD = T_商品.商品CD "

  'UNION ALL演算子をはさむ。
  strSQL = strSQL & " UNION ALL"

  'Sum集計関数で項目の合計を計算する
  strSQL = strSQL & " Select Left([T_月別売上.商品CD], 1) & 'ZZZZ' AS GroupCD "
  strSQL = strSQL & ", Null AS Dummy商品名 "
  strSQL = strSQL & ", Sum([売上4]) , Sum([売上5]) , Sum([売上6])"
  strSQL = strSQL & ", Sum([売上7]) , Sum([売上8]) , Sum([売上9])"
  strSQL = strSQL & " From T_月別売上, T_商品 "
  strSQL = strSQL & " Where T_月別売上.商品CD = T_商品.商品CD "
  strSQL = strSQL & " Group By Left([T_月別売上.商品CD], 1) & 'ZZZZ'"

  'Order By 商品CD と商品コードで並べ替える
  strSQL = strSQL & " Order By T_月別売上.商品CD"

  Set rs = db.Execute(strSQL) 'SQL発行、レコードセットの作成

  'データの表示をテーブルで行う
  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>

</body>
</html>

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



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL AS演算子を使用して、別名にしてデータを表示してみる</title>
</head>
<body>
<h1>SQL AS演算子を使用して、別名にしてデータを表示してみる</h1>
<p>AS演算子、よく見かけるのは、変数の型を指定したりする時に<br>
Dim strABC <b>As</b> String とか、型指定だけど、<br>
SQLでは、少し違って、フィールド <b>AS</b> 名前 や テーブル <b>AS</b> 名前 で、別名にすることができます。<br>
まぁ、慣れの問題かなぁ。<br>
<pre>
Select 商品CD,売上4,売上5,売上6 
  From T_月別売上テーブル
とか、SQLを書くのですが、
AS演算子を使用して別名のテストをしてみます。
Select 商品CD, 売上4 AS 4月売上, DATA.売上5, DATA.売上6 AS 6月売上
  From T_月別売上テーブル AS DATA
--
売上4 AS 4月売上
DATA.売上5
DATA.売上6 AS 6月売上
T_月別売上テーブル AS DATA
としてみました、結果は?
</pre></p>
<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("db072.mdb")

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

  'お約束のレコードセットの作成
  strSQL = "Select 商品CD, 売上4 AS 4月売上, DATA.売上5, "
  strSQL = strSQL & " DATA.売上6 AS 6月売上 "
  strSQL = strSQL & " From T_月別売上 AS DATA"
  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>
</body>
</html>

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



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>AS 演算子を使用して、0 AS XXXX, 1 AS YYYY, 2 AS ZZZZは?</title>
</head>
<body>
<h1>AS 演算子を使用して、0 AS XXXX, 1 AS YYYY, 2 AS ZZZZは?</h1>
<pre>
Select 0 AS XXXX, 1 AS YYYY, 2 AS ZZZZ
  From T_月別売上テーブル
を実行すると、結果は?
</pre>
<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("db072.mdb")

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

  'お約束のレコードセットの作成
  strSQL = "Select 0 AS XXXX, 1 AS YYYY, 2 AS ZZZZ "
  strSQL = strSQL & " From T_月別売上"
  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>
</body>
</html>

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

↑コードの三流解説は、
三流君ASP:SQL AS演算子で別名管理
を見て、笑ってやってください。



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


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

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


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

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


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