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

mysql:8462

From: tani <tani <tanitani@xxxxxxxxxx>>
Date: Wed, 10 Dec 2003 01:06:56 +0900
Subject: [mysql 08462]

はじめまして。大谷と申します。

四苦八苦しながらSQLを書いているのですが、こんな方法で
大丈夫なのかと心配になり、投稿いたします。

仕事の工程管理をするアプリケーションを作成しています。
ひとつの仕事にはいくつかの工程があり、かつ工程の数が
固定ではないので別テーブルで工程を管理することにしました。

 +-------------+
 |仕事テーブル |
 |=============|
 |   仕事ID    |
 |-------------|
 |   仕事名    | A社web作成/B社web作成など
 +-------------+

 +-------------+
 |工程テーブル |
 |=============|
 |   仕事ID    |
 |-------------|
 |   工程名    | 受注/製作/修正/納品など
 |-------------|
 |    期限     | 11.4/12.20など
 +-------------+

--------問題点-----------------------------------------
仕事のリストを表示する必要があります。
リストにはいくつかの工程も表示する必要があります。
リストは工程の項目でもソートが可能である必要があります。
 +-----------------------+
 |仕事名     |受注 |納品 |
 +-----------------------+
 |A社web作成 |11.4 |12.1 |
 +-----------------------+
 |B社web作成 |11.20|12.10|
 +-----------------------+

--------自分なりの解決方法-----------------------------
フィールドの値にある情報(受注、納品)からそれぞれ
テーブルを作成。作成したテーブルを仕事テーブルと結合。

上記を踏まえて以下のようなSQLを書きました。


--------SQL--------------------------------------------
#受注テンポラリテーブル作成
CREATE temporary table T1 as
    SELECT 仕事ID, 工程名 as "受注"
    FROM   工程テーブル
    WHERE  工程名 = "受注";

#インデックス作成
ALTER table T1 add index (仕事ID);


#納品テンポラリテーブル作成
CREATE temporary table T2 as
    SELECT 仕事ID, 工程名 as "納品"
    FROM   工程テーブル
    WHERE  工程名 = "納品";

#インデックス作成
ALTER table T2 add index (仕事ID);

#仕事リスト作成

SELECT 仕事名,受注,納品
FROM   仕事テーブル
       LEFT JOIN T1 ON T1.仕事ID = 仕事テーブル.仕事ID
       LEFT JOIN T2 ON T2.仕事ID = 仕事テーブル.仕事ID

--------心配な点---------------------------------------
・SQLってこんな使い方をするのか(アプリケーションで
 解決すべき問題なのか)
・そもそもデータベースの設計が悪いのか
-------------------------------------------------------

こんな説明で正しく伝わるかは不安ですが、皆様の意見を
いただければと思います。

よろしくお願いします。

-- 
大谷泰弘


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

->    8462 2003-12-10 01:06 [tani <tanitani@xxxxx]                                         
      8463 2003-12-10 01:22 ┣[tani <tanitani@xxxxx] Re: フィールドの値をフィールドにする  
      8465 2003-12-10 07:50 ┃┗["KAWAI,Takanori" <GC]                                     
      8473 2003-12-10 23:50 ┃ ┗[tani <tanitani@xxxxx]                                   
      8464 2003-12-10 01:25 ┗["T.P.S.Nakagawa" <ya]                                       
      8474 2003-12-11 00:05  ┣[tani <tanitani@xxxxx] Re: フィールドの値をフィールドにする
      8487 2003-12-14 09:00  ┗[Kazuhiro Yoshida <mo] enum vs master table (Re: )         
      8490 2003-12-14 09:22   ┣["T.P.S.Nakagawa" <ya]                                   
      8491 2003-12-15 04:36   ┗["zen kishimoto" <zen] MySQL レファレンス・マニュアルを日本語に翻訳出来る方を募集