Blog
2004/04/15のBlog
[ 11:42 ]
[ ■■ネット系■■ ]
[ 10:56 ]
[ ├■DB関連(SQL以外) ]
2004/04/14のBlog
[ 14:22 ]
[ ■■ネット系■■ ]
MyBlogのスタイルを色だけごっそり変えてみたんですが、なんかイマイチです。
目指せ、昔の教室にあった黒板!てな感じにしようと思ったのですが、途中で配色を考えるのが面倒になってしまいました。(^^;)
普通のテキストをFFFFFFにしようかとも思ったんですが、緑地には白のほうが映えるしーと思ってリンクカラーにしてしまったのが敗因でしょーか。
それとも、そもそも、今時、画像を使わずに…なんて考えているのがいかんのでしょーか。
こんなんぢゃいかんなぁ。
これでWeb Applicationも作ってんだから、世話なし。
CSSは面白いんだけど苦手ぢゃあ…。
目指せ、昔の教室にあった黒板!てな感じにしようと思ったのですが、途中で配色を考えるのが面倒になってしまいました。(^^;)
普通のテキストをFFFFFFにしようかとも思ったんですが、緑地には白のほうが映えるしーと思ってリンクカラーにしてしまったのが敗因でしょーか。
それとも、そもそも、今時、画像を使わずに…なんて考えているのがいかんのでしょーか。
こんなんぢゃいかんなぁ。
これでWeb Applicationも作ってんだから、世話なし。
CSSは面白いんだけど苦手ぢゃあ…。
[ 10:48 ]
[ ├■DB関連(SQL以外) ]
具体事例として、「商品マスタをベースに売上リストを作成したいときは?」をお題にして、どういう考え方でクエリを組上げていったらいいか等のお話を書きたいと思います。
商品マスタ
CREATE TABLE TM_ITEM (
ITEM_CD VARCHAR(10) PRIMARY KEY, -- 商品CD
ITEM_NAME VARCHAR(100) -- 商品名
)
売上トランザクション
CREATE TABLE TT_ITEM_SEL (
CHECK_ID VARCHAR(10) PRIMARY KEY, -- 伝票ID
SEL_DATE DATETIME NOT NULL, -- 売上日時
ITEM_CD VARCHAR(10) NOT NULL, -- 商品CD
QUANTITY INT NOT NULL, -- 数量
UNIT_COST INT NOT NULL -- 単価
)
ここから、商品ごとの売上数量と、金額の合計を算出したいとします。
このとき、クエリ初級者であれば、こんな段取りで考えてクエリを組み立てていけばいいとおもいます。
Step1. 売上トランザクションをベースに商品CDごとの売上数量・売上金額を抽出
Step2. 商品マスタ一覧を元に、Step1のデータを商品CDで結合
まず、Step1から考えてみると、こんなクエリがかけます。
SELECT T.ITEM_CD, SUM(T.QUANTITY) TOTAL_Q, SUM(T.QUANTITY*T.UNIT_COST) TOTAL_C
FROM TT_ITEM_SEL T
GROUP BY T.ITEM_CD
そして、Step2へ
SELECT M.ITEM_NAME, T.TOTAL_Q, T.TOTAL_C
FROM TM_ITEM M
LEFT JOIN
(SELECT
T.ITEM_CD,
SUM(T.QUANTITY) TOTAL_Q,
SUM(T.QUANTITY*T.UNIT_COST) TOTAL_C
FROM TT_ITEM_SEL T
GROUP BY T.ITEM_CD) T
ON M.ITEM_CD = T.ITEM_CD
# T.TOTAL_Q, T.TOTAL_C はNULLになる可能性があるので、ここでは書いていませんがRDBMSのローカルルールに従ってNULL処理をしてくださいネ。
これでお目当てのクエリの完成です。
ただ、RDBMSによっては上記のクエリより、もう少しコストの低いクエリを書くことができます。
そのときの考え方はこうなります。
Step1. 商品マスタ一覧と売上トランザクションを商品CDで結合
Step2. 商品CDごとの売上数量・売上金額を抽出
先ほどの初級者向けと書いた考え方とは逆になるんですね。
このクエリを実現すると、こんな感じになります。
SELECT
M.ITEM_NAME,
SUM(T.QUANTITY) TOTAL_Q,
SUM(T.QUANTITY*T.UNIT_COST) TOTAL_C
FROM TM_ITEM M
LEFT JOIN TM_ITEM_SEL T
ON M.ITEM_CD = T.ITEM_CD
GROUP BY M.ITEM_CD, M.ITEM_NAME
さて、先ほどの初心者向けの考え方(これをAとします)と後者の考え方(これをBとします)とでは、RDBMSの解釈の仕方は何が違うのでしょう?
Aではこういうステップを踏んで処理を行う可能性があります。
1) 売上トランザクションのデータを走査し、欲しいデータを抽出
2) 1と商品マスタデータをJoinする
3) 2を走査し、欲しいデータを抽出
Bではこういうステップを踏んで処理を行う可能性があります。
1) 商品マスタと売上トランザクションをJoinする
2) 1を走査し、欲しいデータを抽出
Bの方がステップ数が少ないですよね?
ステップ数が少ない=コストが下がる可能性があるということなんです。
ただし、これはRDBMSによって変わる事ですので、実際に試される場合は必ずベンチマークテストや実行計画などを取って最適なクエリを見つけ出してくださいね。
→ [DB関連INDEX]
商品マスタ
CREATE TABLE TM_ITEM (
ITEM_CD VARCHAR(10) PRIMARY KEY, -- 商品CD
ITEM_NAME VARCHAR(100) -- 商品名
)
売上トランザクション
CREATE TABLE TT_ITEM_SEL (
CHECK_ID VARCHAR(10) PRIMARY KEY, -- 伝票ID
SEL_DATE DATETIME NOT NULL, -- 売上日時
ITEM_CD VARCHAR(10) NOT NULL, -- 商品CD
QUANTITY INT NOT NULL, -- 数量
UNIT_COST INT NOT NULL -- 単価
)
ここから、商品ごとの売上数量と、金額の合計を算出したいとします。
このとき、クエリ初級者であれば、こんな段取りで考えてクエリを組み立てていけばいいとおもいます。
Step1. 売上トランザクションをベースに商品CDごとの売上数量・売上金額を抽出
Step2. 商品マスタ一覧を元に、Step1のデータを商品CDで結合
まず、Step1から考えてみると、こんなクエリがかけます。
SELECT T.ITEM_CD, SUM(T.QUANTITY) TOTAL_Q, SUM(T.QUANTITY*T.UNIT_COST) TOTAL_C
FROM TT_ITEM_SEL T
GROUP BY T.ITEM_CD
そして、Step2へ
SELECT M.ITEM_NAME, T.TOTAL_Q, T.TOTAL_C
FROM TM_ITEM M
LEFT JOIN
(SELECT
T.ITEM_CD,
SUM(T.QUANTITY) TOTAL_Q,
SUM(T.QUANTITY*T.UNIT_COST) TOTAL_C
FROM TT_ITEM_SEL T
GROUP BY T.ITEM_CD) T
ON M.ITEM_CD = T.ITEM_CD
# T.TOTAL_Q, T.TOTAL_C はNULLになる可能性があるので、ここでは書いていませんがRDBMSのローカルルールに従ってNULL処理をしてくださいネ。
これでお目当てのクエリの完成です。
ただ、RDBMSによっては上記のクエリより、もう少しコストの低いクエリを書くことができます。
そのときの考え方はこうなります。
Step1. 商品マスタ一覧と売上トランザクションを商品CDで結合
Step2. 商品CDごとの売上数量・売上金額を抽出
先ほどの初級者向けと書いた考え方とは逆になるんですね。
このクエリを実現すると、こんな感じになります。
SELECT
M.ITEM_NAME,
SUM(T.QUANTITY) TOTAL_Q,
SUM(T.QUANTITY*T.UNIT_COST) TOTAL_C
FROM TM_ITEM M
LEFT JOIN TM_ITEM_SEL T
ON M.ITEM_CD = T.ITEM_CD
GROUP BY M.ITEM_CD, M.ITEM_NAME
さて、先ほどの初心者向けの考え方(これをAとします)と後者の考え方(これをBとします)とでは、RDBMSの解釈の仕方は何が違うのでしょう?
Aではこういうステップを踏んで処理を行う可能性があります。
1) 売上トランザクションのデータを走査し、欲しいデータを抽出
2) 1と商品マスタデータをJoinする
3) 2を走査し、欲しいデータを抽出
Bではこういうステップを踏んで処理を行う可能性があります。
1) 商品マスタと売上トランザクションをJoinする
2) 1を走査し、欲しいデータを抽出
Bの方がステップ数が少ないですよね?
ステップ数が少ない=コストが下がる可能性があるということなんです。
ただし、これはRDBMSによって変わる事ですので、実際に試される場合は必ずベンチマークテストや実行計画などを取って最適なクエリを見つけ出してくださいね。
→ [DB関連INDEX]
2004/04/13のBlog
[ 16:13 ]
[ ├■会社にて… ]
[ 12:56 ]
[ ├■前略 Doblogさま ]
Doblogへのご意見のトラックバックです。
1. サーバ増設してください~
Servletだから遅いのはしょうがないのはわかっているのすが、繋がらないのはシャレにならんです。
サーバの設定変える程度じゃなく、サーバ台数増やして、ロードバランス整えてください。
2. 検索スピード上げてください~
Servletが遅いからといって、これでは遅すぎます。
サーバに余計に負荷がかかって落ちる元になっていると思うんですが…。
検索エンジン用サーバを別立てしてデータと処理をそっちに投げちゃってパラレルに運用できればもっと軽くなると思うのだけど、そういうものぢゃなさげなんでしょうか?
3. RSSをXML整形してください~
XML整形型になっていないデータがRSS配信でやってくることがあります。
せめて整形型にして配信していただかないとシャレにならないです~。
以下は、多少愚痴が入っています。(_o_)
RSSに関してはいろいろ書きたいところはありますが、記事のダイジェスト配信タイプなのだと理解すればいいかと思い、上記の1点だけのコメントにしました。
あと、つながんないときに出るエラー表示。
Internal Server Errorを出すのはいいですが、WebServerApplicationSoftware名やバージョン…だけでなく、ポート番号まで丸見えなのはいかがなモノかと。(^^;)
てるねっとでWebServerとつないで、お話して遊べって言うことでしょうかネ。(^^;;)
きっと誰かやっているに違いないっ。ま~ちがいないっ。
1. サーバ増設してください~
Servletだから遅いのはしょうがないのはわかっているのすが、繋がらないのはシャレにならんです。
サーバの設定変える程度じゃなく、サーバ台数増やして、ロードバランス整えてください。
2. 検索スピード上げてください~
Servletが遅いからといって、これでは遅すぎます。
サーバに余計に負荷がかかって落ちる元になっていると思うんですが…。
検索エンジン用サーバを別立てしてデータと処理をそっちに投げちゃってパラレルに運用できればもっと軽くなると思うのだけど、そういうものぢゃなさげなんでしょうか?
3. RSSをXML整形してください~
XML整形型になっていないデータがRSS配信でやってくることがあります。
せめて整形型にして配信していただかないとシャレにならないです~。
以下は、多少愚痴が入っています。(_o_)
RSSに関してはいろいろ書きたいところはありますが、記事のダイジェスト配信タイプなのだと理解すればいいかと思い、上記の1点だけのコメントにしました。
あと、つながんないときに出るエラー表示。
Internal Server Errorを出すのはいいですが、WebServerApplicationSoftware名やバージョン…だけでなく、ポート番号まで丸見えなのはいかがなモノかと。(^^;)
てるねっとでWebServerとつないで、お話して遊べって言うことでしょうかネ。(^^;;)
きっと誰かやっているに違いないっ。ま~ちがいないっ。
2004/04/12のBlog
[ 15:43 ]
[ ├■占い・診断シリーズ ]
ザイーガさんちの【占い・鑑定】右脳派?左脳派?、船の女?港の女?をTBです。
船の女港の女のほうに惹かれて、やってみてしまいました。
結果は画像の通りです。(^^;)
「スタートで待っていなさい」というタカビーさがなかなかいいとこついた感じですねぇ。
右脳派左脳派どっち
「あなたは多少右脳寄りです。」といわれてしまいました。
まあそうでしょう。(^^;)
それでもPG&SEやってんだから、何とかなっているのさ~。
船の女港の女のほうに惹かれて、やってみてしまいました。
結果は画像の通りです。(^^;)
「スタートで待っていなさい」というタカビーさがなかなかいいとこついた感じですねぇ。
右脳派左脳派どっち
「あなたは多少右脳寄りです。」といわれてしまいました。
まあそうでしょう。(^^;)
それでもPG&SEやってんだから、何とかなっているのさ~。
[ 09:35 ]
[ └■こどもと… ]
先週(4月3日~4月9日)、旦那の金魚のフンで子連れでシアトルに行ってきました。
旦那はMSの方々やMVPの方々と共に仕事でのシアトル行きだったのですが、私と子供は単純に旅行としてのシアトル行きでした。
昼間はみんなお仕事なので、ツアーコンダクターのお姉さんと遊んでもらっていました。
とにかく、子供を楽しませないと駄々こねて大変なので、いろいろとご面倒をかけてしまいました(特に機内…(--;)ご迷惑をおかけしました(_o_))が、とてもかわいがってもらえて、子供もツアコンのお姉さんにとてもなついていました。
特に子供の気に入った場所は、子供ミュージアム。
子供ミュージアムはシアトル・センター内にあるんです。
なぜか、行った時期に日本のアニメ文化などの紹介コーナーがあって、大人でも中で座れるでっかいネコバス(ジブリの森にあるようなレベル以上のでっかいもの)が鎮座しておりました。
しかし、子供は怖かったようで、避けておままごとができるお店屋さんコーナーでずーっと遊んでおりました。(^^;)
旦那はMSの方々やMVPの方々と共に仕事でのシアトル行きだったのですが、私と子供は単純に旅行としてのシアトル行きでした。
昼間はみんなお仕事なので、ツアーコンダクターのお姉さんと遊んでもらっていました。
とにかく、子供を楽しませないと駄々こねて大変なので、いろいろとご面倒をかけてしまいました(特に機内…(--;)ご迷惑をおかけしました(_o_))が、とてもかわいがってもらえて、子供もツアコンのお姉さんにとてもなついていました。
特に子供の気に入った場所は、子供ミュージアム。
子供ミュージアムはシアトル・センター内にあるんです。
なぜか、行った時期に日本のアニメ文化などの紹介コーナーがあって、大人でも中で座れるでっかいネコバス(ジブリの森にあるようなレベル以上のでっかいもの)が鎮座しておりました。
しかし、子供は怖かったようで、避けておままごとができるお店屋さんコーナーでずーっと遊んでおりました。(^^;)
子供ミュージアムの上の階には巨大なビニール製の滑り台などがおいてあり、それもまた、子供を大いに楽しませたようです。
初日はお金がいるなんて全く気がつかずにあそばせてしまいました。(爆)
初日はスタッフのお兄ちゃんも、大勢の子供にあてられて(?)どうでもよくなっていたのかもしれません。(^^;)
子供ミュージアムでは親が同伴しないといけないため、かなりお金がかかったのですが、こっちの施設は子供だけ料金がかかる上に、ガンバレーだけ言っていればいいので、この時間だけはゆっくりできました。
その他の時間は、というと、MSのスタッフの方々にお世話になったり、他のMVPの方々に子供と遊んでもらったりして、子供はかなりご満悦でしたね。
特に、とあるMSのスタッフの方(男性)にはとってもなついておりました。(笑)
今朝も、寝言で「○○のおにいちゃーん」と叫んでおりましたので、相当お気に入りだったようです。(笑)
本当にMSのスタッフの方々、他のMVPの方々、ツアコンのお姉さまには大変お世話になりました。(_o_)
子供は「アメリカ行きたーい」とまた申しておりますので、また来年もお邪魔するかもしれません。
そのときはまた、子供をいじって遊んでやってくださいましね。
最後に主婦をしなくていい1週間はちと楽でした。
しかし、1日中子供を見ていなければならない大変さ加減と相殺すると、いつもより大変でした。
初日はお金がいるなんて全く気がつかずにあそばせてしまいました。(爆)
初日はスタッフのお兄ちゃんも、大勢の子供にあてられて(?)どうでもよくなっていたのかもしれません。(^^;)
子供ミュージアムでは親が同伴しないといけないため、かなりお金がかかったのですが、こっちの施設は子供だけ料金がかかる上に、ガンバレーだけ言っていればいいので、この時間だけはゆっくりできました。
その他の時間は、というと、MSのスタッフの方々にお世話になったり、他のMVPの方々に子供と遊んでもらったりして、子供はかなりご満悦でしたね。
特に、とあるMSのスタッフの方(男性)にはとってもなついておりました。(笑)
今朝も、寝言で「○○のおにいちゃーん」と叫んでおりましたので、相当お気に入りだったようです。(笑)
本当にMSのスタッフの方々、他のMVPの方々、ツアコンのお姉さまには大変お世話になりました。(_o_)
子供は「アメリカ行きたーい」とまた申しておりますので、また来年もお邪魔するかもしれません。
そのときはまた、子供をいじって遊んでやってくださいましね。
最後に主婦をしなくていい1週間はちと楽でした。
しかし、1日中子供を見ていなければならない大変さ加減と相殺すると、いつもより大変でした。
2004/04/02のBlog
[ 11:36 ]
[ ├■DB関連(SQL以外) ]
SQL Server限定ですが、アナログ時計を出すクエリだそうです。
すごい!面白すぎる。
と同時に、なんて暇人…。(^^;)
こういうアートなプログラム(プログラムじゃないけど)は見ていて気持ちがいいですね~。
こういう発想力が欲しいものです。
別のブログからのトラックバック…のつもりがなっていない。
ただのリンクだ。(^^;)
でも、トラックバックのつもりなんです~。
2004/04/12 Add...
↑でTBのつもりが…云々と書いていますが、河端さんが釣れたようなので、TBは成功している模様です。
→ [DB関連INDEX]
すごい!面白すぎる。
と同時に、なんて暇人…。(^^;)
こういうアートなプログラム(プログラムじゃないけど)は見ていて気持ちがいいですね~。
こういう発想力が欲しいものです。
別のブログからのトラックバック…のつもりがなっていない。
ただのリンクだ。(^^;)
でも、トラックバックのつもりなんです~。
2004/04/12 Add...
↑でTBのつもりが…云々と書いていますが、河端さんが釣れたようなので、TBは成功している模様です。
→ [DB関連INDEX]
[ 10:33 ]
[ └■こどもと… ]
娘(3歳)のお気に入りのサイトはディズニーオフィシャルサイト。
簡単なマウス操作だけで遊べるコーナーが結構あることと、予告編ムービーが見られるのがお気に入りの要素のようです。
昨日はトイ・ストーリーの塗り絵で遊んでいました。
バズ・ライトイヤー君が白黒のワビサビの渋い世界の住人になってしまっていました。
簡単なマウス操作だけで遊べるコーナーが結構あることと、予告編ムービーが見られるのがお気に入りの要素のようです。
昨日はトイ・ストーリーの塗り絵で遊んでいました。
バズ・ライトイヤー君が白黒のワビサビの渋い世界の住人になってしまっていました。
でも、このサイト、コーナーの入れ替わりが結構あるので、娘のお気に入りのお遊びがどんどんなくなっていきます。
最近では、プーさんのコーナーがなくなってしまったようで、プーさんのお絵かきがしたい娘はしょんぼり顔。
また、時間によってもあったりなかったり…というものもあるような感じがします。
新しいコーナーができるのはうれしいけど、今まであったコーナーがなくなってしまうのは悲しいなぁ。
ひょっとしたら探し方が悪いだけであるのかもしれないけど、サイトマップにいってもないモンはきっとないんだろうなー…と思うCAMUSでした。
2004/04/09 Add...
プーさんのコーナーを発見しました。
これで、娘も喜んでいます。
ああ、よかった。
でも、ニモの予告編が見つからなくて、またしょんぼりの娘でした。
最近では、プーさんのコーナーがなくなってしまったようで、プーさんのお絵かきがしたい娘はしょんぼり顔。
また、時間によってもあったりなかったり…というものもあるような感じがします。
新しいコーナーができるのはうれしいけど、今まであったコーナーがなくなってしまうのは悲しいなぁ。
ひょっとしたら探し方が悪いだけであるのかもしれないけど、サイトマップにいってもないモンはきっとないんだろうなー…と思うCAMUSでした。
2004/04/09 Add...
プーさんのコーナーを発見しました。
これで、娘も喜んでいます。
ああ、よかった。
でも、ニモの予告編が見つからなくて、またしょんぼりの娘でした。