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

mysql:8465

From: "KAWAI,Takanori" <"KAWAI,Takanori" <GCD00051@xxxxxxxxxx>>
Date: Wed, 10 Dec 2003 07:50:04 +0900
Subject: [mysql 08465] Re: フィールドの値をフィールドにする

川合孝典です。

----- Original Message ----- 
From: "tani" <tanitani@xxxxxxxxxx>
To: <ml@xxxxxxxxxx>
Sent: Wednesday, December 10, 2003 1:22 AM
Subject: [mysql 08463] Re: フィールドの値をフィールドにする


> すみません。件名を付け忘れました。
> On Wed, 10 Dec 2003 01:06:56 +0900, tani wrote:
> > はじめまして。大谷と申します。
(中略)
> > --------心配な点---------------------------------------
> > ・SQLってこんな使い方をするのか(アプリケーションで
> >  解決すべき問題なのか)
今のテーブル設計からすれば"基本的には"問題ないんじゃないかと
思います。
なんで"基本的には"とつけたかといえば、今のままでは
T1、T2は工程名を返してしまいますから

 CREATE temporary table T1 as
     SELECT 仕事ID, 期限 as "受注"
     FROM   工程テーブル
     WHERE  工程名 = "受注";

のように期限を返す必要があるでしょう(T2についても同様)
下記「試してみたSQL」をご覧ください。

> > ・そもそもデータベースの設計が悪いのか
今あるテーブルそのものが、すぐに何か問題があるようには
思いませんでした。
#個人的にはT1、T2、漢字のテーブル名、カラム名って、どうかとは
#思いますが...
ただ全体としての良い/悪いは大谷さんが、どんな管理をしたい
のかによるでしょう。
私としては、「受注」「納品」を他の工程と一緒にしていいのか
気になります。私には受注の「期限」っていうものがピンときま
せんし、受注や納品がない仕事を管理したいのかどうか。
営業管理のようなものなら受注までの活動が必要でしょうし、
受注したものの納品がないっていうものどうかなと。
#「それでいいんだ」ってことであれば、構いませんけども。

=試してみたSQL=
CREATE TABLE tblShigoto (
   SHIGOTOID  INTEGER NOT NULL,
   SHIGOTOMEI VARCHAR(80),
   PRIMARY KEY (SHIGOTOID));
CREATE TABLE tblKotei (
   SHIGOTOID INTEGER NOT NULL,
   KOTEIMEI  VARCHAR(80) NOT NULL,
   KIGEN     VARCHAR(20),
   PRIMARY KEY (SHIGOTOID, KOTEIMEI));
INSERT INTO tblShigoto VALUES(1, 'A Web作成');
INSERT INTO tblShigoto VALUES(2, 'B Web作成');
INSERT INTO tblShigoto VALUES(3, 'C Web作成');
INSERT INTO tblShigoto VALUES(4, 'D Web作成');
INSERT INTO tblKotei VALUES(1, '受注', '11.4');
INSERT INTO tblKotei VALUES(1, '納品', '12.1');
INSERT INTO tblKotei VALUES(2, '受注', '11.20');
INSERT INTO tblKotei VALUES(2, '納品', '12.10');
INSERT INTO tblKotei VALUES(3, '受注', '11.23');
INSERT INTO tblKotei VALUES(4, '納品', '12.14');

CREATE temporary table tblJuchu as
     SELECT SHIGOTOID, KIGEN as JUCHUKIGEN
     FROM   tblKotei
     WHERE  KOTEIMEI = '受注';
ALTER table tblJuchu add index (SHIGOTOID);
CREATE temporary table tblNohin as
     SELECT SHIGOTOID, KIGEN as NOHINKIGEN
     FROM   tblKotei
     WHERE  KOTEIMEI = '納品';
ALTER table tblNohin add index (SHIGOTOID);

SELECT tblShigoto.SHIGOTOMEI as '仕事名',
       JUCHUKIGEN as '受注',
       NOHINKIGEN as '納品'
FROM tblShigoto
     LEFT JOIN tblJuchu ON
  tblJuchu.SHIGOTOID = tblShigoto.SHIGOTOID
     LEFT JOIN tblNohin ON
  tblNohin.SHIGOTOID = tblShigoto.SHIGOTOID;

=結果(最後のSELECTのみ)=
mysql> SELECT tblShigoto.SHIGOTOMEI as '仕事名',
    ->        JUCHUKIGEN as '受注',
    ->        NOHINKIGEN as '納品'
    -> FROM tblShigoto
    ->      LEFT JOIN tblJuchu ON
    ->          tblJuchu.SHIGOTOID = tblShigoto.SHIGOTOID
    ->      LEFT JOIN tblNohin ON
    ->          tblNohin.SHIGOTOID = tblShigoto.SHIGOTOID;
+-----------+-------+-------+
| 仕事名    | 受注  | 納品  |
+-----------+-------+-------+
| A Web作成 | 11.4  | 12.1  |
| B Web作成 | 11.20 | 12.10 |
| C Web作成 | 11.23 | NULL  |
| D Web作成 | NULL  | 12.14 |
+-----------+-------+-------+
4 rows in set (0.00 sec)

===================================================
川合 孝典 (Hippo2000)
   DBI日本語メーリングリスト管理人、Kansai.pm所属
   kwitknr@xxxxxxxxxx GCD00051@xxxxxxxxxx
   http://member.nifty.ne.jp/hippo2000http://www.hippo2000.info/
perldocの日本語情報ならperldocjp:翻訳してみませんか?
  http://perldocjp.sourceforge.jp/
===================================================


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

      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 レファレンス・マニュアルを日本語に翻訳出来る方を募集