[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.077 SQL AS演算子で別名管理

SQL AS演算子で別名管理


本文(発行内容)


<SQL AS演算子で別名管理>

こんにちは、三流プログラマーのKen3です。

/* * 1.今回のキッカケ */

掲示板に下記の質問をもらいました ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >投稿者 : SQL初心者 >タイトル : 0 AS やNull ASについて > >タイトルのことなんですが、SQLのSELECT文で"0 AS"や"Null AS"と >使われていることがありますが、アレは何なのでしょうか? >使い方を調べ見ましたが、いまいちです。 > >使っているのはよく見るのですが。 >ご存知でしたら教えてください! ------- 単純な解答だと、AS演算子は別名を定義してます。 なんて本人もわけのわからない解答だったりします。 ※実際のSQL文を載せてもらえると、説明しやすいけど、  メルマガのネタにSQL文を作ってみました。

/* * 2.Null AS を使う場面を考えてみる。 */

AS演算子は別名を定義してます。 Null AS かぁ・・・ 項目をNullにしたい・・・う〜ん。 Whereの条件で項目 IS Nullは見かけるけどなぁ。 あっ、前回、UNIONでSELECT文をつなげた時、 列数が合わないと、エラーが発生してました。 Microsoft JET Database Engine エラー '80040e14' ユニオン クエリで選択した 2 つのテーブルまたはクエリの列数が一致しません。 /cgi-bin/test/test076-1.asp, 行 50 そこで、下記のように、 ダミーで商品名を”小計”として逃げてました。 Select T_月別売上.商品CD, T_商品.商品名, 売上4,売上5,売上6,売上7,売上8,売上9 From T_月別売上, T_商品 Where T_月別売上.商品CD = T_商品.商品CD UNION ALL Select Left([商品CD], 1) & 'ZZZZ' AS GroupCD , '小計' AS Dummy商品名 , Sum([売上4]) , Sum([売上5]) , Sum([売上6]) , Sum([売上7]) , Sum([売上8]) , Sum([売上9]) From T_月別売上 Group By Left([商品CD], 1) & 'ZZZZ' Order By T_月別売上.商品CD '小計' AS Dummy商品名とSQL文に入れて、 列の数を合わせてました。 ~~~~~~~~~~~~~~~~ これを、 Null AS Dummy商品名とSQL文に入れて、 空白データを作成してみます。 http://www.ken3.org/cgi-bin/test/test077-1.asp で、 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 と、SQL文を作成してみた。

/* * 3.AS演算子は別名を定義してます。 */

FFFFF As XXXXX と、フィールド名やテーブル名を違う名前として使用可能にするために、 AS演算子を使用してます。 T_月別売上テーブル ^^^^^^^^^^^^^^^^^^ 商品CD 売上4 売上5 ・ ・ 売上12 売上1 売上2 売上3 とテーブル、フィールドがあったら、 ↑作成したテーブルイメージ SQL文を作成して、テストしてみる。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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 としてみました、結果は? http://www.ken3.org/cgi-bin/test/test077-2.asp でテスト実行すると、 商品CD 4月売上 売上5 6月売上 A1 1 2 3 A2 2 0 4 なんて感じでした。

/* * 4. 0 AS XXXX, 1 AS YYYY, 2 AS ZZZZは? */

なるほどね・・ASは別名ですか。 Null AS XXXX で、項目作ったりできるのね。 だとすると、 0 AS XXXXは、ゼロと数字を作るのかい? なんかイヤな予感・・・するんだけど。 じゃ、やってみれは? Select 0 AS XXXX, 1 AS YYYY, 2 AS ZZZZ From T_月別売上テーブル を実行すると、結果は? http://www.ken3.org/cgi-bin/test/test077-3.asp を実行すると、 XXXX YYYY ZZZZ 0 1 2 0 1 2 あらら、出来ちゃいましたね。 -【けんぞう!】--------------------------------------------------------- ASPが利用可能なレンタルサーバーをお探しのアナタ、 http://www.ken3.org/asp/server.html ← けんぞうも使っているサーバーの紹介 『おっIISでbasp21でメール送信、mdbも使えるよ』(三流PG:31歳) ------------------------------------------------------------------------ 

/* * 5.終わりの挨拶 </HTML> */

今回は、 AS 演算子で、別名を作ることを少し解説しました。 Web上を検索してみると、 NULL asの別のサンプルは、 >SELECT title,author FROM text.clob_books b, >TABLE(db2ext.textsearch('"ガーデニング"','TEXT','IX_AUTHOR', >0,10,CAST(NULL as char))) T WHERE T.primKey = B.id と CAST(NULL as char) キャスト?NULL as char?キャラにしてる? 0 asの別のサンプルは、 >CREATE FUNCTION NotNull(text) RETURNS int4 >AS ' (SELECT 1 as RESULT where $1 is not NULL) union > (SELECT 0 as RESULT where $1 is NULL) > ' LANGUAGE 'sql'; なんか、単なるASで別名・・じゃない使い方のような・・・ SQL系は深いなぁと思いつつ、 なんかキレの無いサンプルだったなぁ・・・ 私の実力もまだまだと感じたAS演算子のテスト処理でした。 何かの参考となれば幸いです。 ASP、VBScript勉強中の三流プログラマーのKen3でした。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.077を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告