mysql:13059
From: 関 俊夫 <関 俊夫 <to-seki@xxxxxxxxxx>>
Date: Sun, 4 Jun 2006 06:36:50 +0900
Subject: [mysql 13059] Re: 同一テーブルから階層別に分けるSQL文をつくりたい
すいません。先ほどresに気がつかなくて送ってしまいました。 時々パソコンの時計がくるってしまいます。 早速このSQLを試してみます。 > -----Original Message----- > From: F.Y [mailto:fumi_sby@xxxxxxxxxx] > Sent: Saturday, June 03, 2006 9:07 PM > To: ml@xxxxxxxxxx > Subject: [mysql 13057] Re: 同一テーブルから階層別に分けるSQL文をつくり た > い > > とんでもない日付で送ってきてますね。 > > select a1, a2, a3 > from ( > select name as a1, null as a2, null as a3 > from t1 > where upper_section_id = 0 > union > select t1_0.name as a1, t1_1.name as a2, null as a3 > from t1 as t1_0, t1 as t1_1 > where t1_0.upper_section_id = 0 > and t1_1.upper_section_id = t1_0.id > union > select t1_0.name as a1, t1_1.name as a2, t1_2.name as a3 > from t1 as t1_0, t1 as t1_1, t1 as t1_2 > where t1_0.upper_section_id = 0 > and t1_1.upper_section_id = t1_0.id > and t1_2.upper_section_id = t1_1.id > ) as t0 > order by a1, a2, a3 > ; > > 美しくない…。 > 直積を華麗に使う方法がありそうだけど、体重が1kg増えてしまったので考えら > れない…。 > > --- 関 俊夫 <to-seki@xxxxxxxxxx> からのメッセージ: > > はじめての投稿です。 > > SQL文が作れなく困っています。よろしくお願いします。 > > 会社の組織階層を格納するテーブルがあります。 > > テーブル構造は > > +------------------------------+ > > | sections | > > +------------------------------+ > > | id int (8) | > > | name varchar (50)| > > | upper_section_id int (8) | > > +------------------------------+ > > そのデータは > > +----------------------------------+ > > | id | name | upper_section_id | > > +----------------------------------+ > > | 1 | 本社 | 0 | > > | 2 | A事業部 | 1 | > > | 3 | 東京支店 | 2 | > > | 4 | 営業部 | 3 | > > | 5 | B事業部 | 1 | > > | 6 | 大阪支店 | 5 | > > +----------------------------------+ > > 希望する結果 > > +---------------------------------------+ > > | t1.name | t2.name | t3.name | t4.name | > > +---------------------------------------+ > > |本社 | | | | > > |本社 |A事業部 | | | > > |本社 |A事業部 |東京支店 | | > > |本社 |A事業部 |東京支店 |営業部 | > > |本社 |B事業部 | | | > > |本社 |B事業部 |大阪支店 | | > > +---------------------------------------+ > > 私がためしたSQL文は > > SELECT t1.name, t2.name, t3.name, t4.name > > FROM `sections` AS t1 > > INNER JOIN `sections` AS t2 ON t2.upper_section_id = t1.id > > INNER JOIN `sections` AS t3 ON t3.upper_section_id = t2.id > > INNER JOIN `sections` AS t4 ON t4.upper_section_id = t3.id > > ORDER BY t1.name, t2.name, t3.name, t4.name > > 私がためした結果 > > +---------------------------------------+ > > | t1.name | t2.name | t3.name | t4.name | > > +---------------------------------------+ > > |本社 |A事業部 |東京支店 |営業部 | > > +---------------------------------------+ > > 以上のように4つの階層関係が出来ているデータのみが表示してします。 > > ------------------------ 関 俊夫 ダンサーズオンライン http://www.dancers-online.com/
12277 2005-10-25 09:10 ["fujita" <t-fujita@x] MySQL5.0でシンボリックが有効にならない 12278 2005-10-26 08:14 ┣[Tetsuro IKEDA <tetsu] 12279 2005-10-26 09:49 ┃┗["fujita" <t-fujita@x] 12280 2005-10-26 09:57 ┃ ┗[Tetsuro IKEDA <tetsu] 12281 2005-10-26 10:30 ┃ ┗["fujita" <t-fujita@x] 13055 1938-05-16 13:05 ┗[関 俊夫 <to-seki@xx] 同一テーブルから階層別に分けるSQL文をつくりたい 13057 2006-06-03 21:06 ┣["F.Y" <fumi_sby@xxxx] -> 13059 2006-06-04 06:36 ┃┗[関 俊夫 <to-seki@xx] 13060 2006-06-04 08:15 ┃ ┗[関 俊夫 <to-seki@xx] 13061 2006-06-04 10:30 ┃ ┗[関 俊夫 <to-seki@xx] 13058 2006-06-04 06:31 ┣[関 俊夫 <to-seki@xx] 13180 2006-07-23 03:25 ┗[demanotto <demanotto]