mysql:1278
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Wed, 13 Oct 1999 00:59:00 +0900
Subject: [mysql 01278] Re: お知恵拝借(うまい SQL の書き方)
とみたです。 At Tue, 12 Oct 1999 17:13:38 +0900, endo@xxxxxxxxxx (遠藤 俊裕) wrote: > 現在以下のようなテーブルが存在します。 > > CREATE TABLE WorkSchedule ( > SerialNumber INT NOT NULL, > SerialCode INT NOT NULL, > CurrentDate CHAR ( 10 ), > CurrentWork CHAR ( 50 ), > CarType CHAR ( 5 ), > Note CHAR ( 255 ) > ); > > この中には「個人情報」へ繋がる SerialCode とその個人に対する > 日付(CurrentDate)と作業(CurrentWork)が入っています。 > とりあえず、その他の情報は無視します。 > #「個人情報」は SerialCode と Name が入っているテーブルです。 > > ここで SerialNumber はこのレコードを一意に決める Index 項目です。 > # 宣言はしていませんが、気にしないで下さい。 > > で、結果として以下のような帳票を出したいと考えています。 > > +---------------+-----------+-----------+-----------+-----------+ > | 名 前 | 4月 | 5月 | 6月 | 7月 | … > +---------------+---+---+---+---+---+---+---+---+---+---+---+---+ > | 遠藤 俊裕 | 5| 10| 14| 6| 11| 15| 8| 12| | 4| 16| | … > | | 15| 20| 26| | | | | | | | | | > +---------------+---+---+---+---+---+---+---+---+---+---+---+---+ > |名無しのごんべ | 4| 9| 18| 11| 18| 25| 7| 17| | 7| | | … > | | | | | | | | | | | | | | > +---------------+---+---+---+---+---+---+---+---+---+---+---+---+ > | | | | | | | | | | | | | | > > 更にある特定の条件(CurrentWork がある特定の時)数字に○を付けた > いと思っております。 > > 抽出条件は「個人情報」にある条件と、WorkSchedule にある日付(CurrentDate) > が年度内であること、それと、作業(CurrentWork)が必要な情報にマッチ > していることです。 > > こんな時どんな SQL を書き、データをどう扱えば良いのでしょうか? もひとつ処理のイメージがわかないんで外しているかもしれませんが、こんなん ではどうでしょう? select SerialCode, CurrentDate, if(CurrentWork="特定の値","*","") as m from WorkSchedule where 個人情報の条件 and 日付範囲の条件 order by 1,2; CurrentWork の条件が合えば "*" が出力されます。結果はこんな↓感じで出ま すんで、あとは他の言語で整形すればいいと思います。 +------------+-------------+---+ | SerialCode | CurrentDate | m | +------------+-------------+---+ | 1 | 1999-04-05 | | | 1 | 1999-04-10 | | | 1 | 1999-04-14 | * | 〜〜 | 2 | 1999-04-04 | | | 2 | 1999-04-09 | | | 2 | 1999-04-18 | * | 〜〜 -- とみたまさひろ <tommy@xxxxxxxxxx>
1276 1999-10-12 17:13 [<endo@xxxxxxxxxx> ] お知恵拝借(うまい SQL の書き方) -> 1278 1999-10-13 00:59 ┗[とみたまさひろ <tomm] 1279 1999-10-13 12:41 ┗[<endo@xxxxxxxxxx> ]