[前][次][番号順一覧][スレッド一覧]

mysql:1276

From: (遠藤 俊裕) <<endo@xxxxxxxxxx>>
Date: Tue, 12 Oct 1999 17:13:38 +0900
Subject: [mysql 01276] お知恵拝借(うまい SQL の書き方)

遠藤と申します。

今回は私の無い知恵ではなかなかいい方法が思いつかず、皆様のお
知恵を拝借したくメールいたしました。

現在以下のようなテーブルが存在します。

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 を書き、データをどう扱えば良いのでしょうか?

ちなみに、今は Access で組んでいるのですが、以下の手順で作成して
います。

1.年と月をくっつけたデータと(ex. 199904)日を列挙したデータ(12
  桁ゼロサプレス無し)を作成する。
    ex. 199904, 050000000000
2.上のデータに同じ月の日付があると追加するような関数を作り select
  する。
  ex. 199904, 050000000000
        199904, 051000000000
3.同時に日付に会わせて○を付けるべき場所にビットを立てるデータ
  も作る
  ex. 199904, 050000000000, 000000
        199904, 051000000000, 010000
4.上のデータを年と日付をくっつけたデータでグルーピングし、前述の
  Last 値を取る。
5.帳票レイアウトの時、日付の分解と、ビットの確認をしながらデー
  タの表示と○を書く。

以上を行っていますが、上記4までの作業がとっても重たく、時間がか
かります。しかし、表示前のデータ生成までは Server にやらせるべき
だと考えますので、なんとかして、軽い SQL を書きたいと思っています。

どうすれば賢く SQL がかけるでしょうか?

ご教授よろしくお願いいたします。m(_ _)m

[前][次][番号順一覧][スレッド一覧]

->    1276 1999-10-12 17:13 [<endo@xxxxxxxxxx>   ] お知恵拝借(うまい SQL の書き方)       
      1278 1999-10-13 00:59 ┗[とみたまさひろ <tomm]                                       
      1279 1999-10-13 12:41  ┗[<endo@xxxxxxxxxx>   ]