2006年7月23日

[mysql 13180] Re: 同一テーブルから階層別に分けるSQL文をつくりたい

demanottoです。

すいません。
試してはいないのですが、left joinを使えば解決しませんか?

いまさら遅いですね(笑)

On 5/16/38, 関 俊夫 <to-seki@xxxxx> wrote:

> はじめての投稿です。
> 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/
>
>
>

投稿者 xml-rpc : 2006年7月23日 03:25
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/42521
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。