• 締切済み

SQL初心者なのですが.行き詰まっています。

ID 支店コード 支店名 1 201 札幌 2 401 大阪 3 402 京都 4 501 福岡 5 301 名古屋 ID 支店コード 支店名 1 609 オーストラリア 2 601 上海 3 709 ニューヨーク 4 802 ソウル 5 909 北京 ID 本部コード 本部名 1 101 新宿 2 102 横浜 3 103 梅田 4 104 神戸 5 105 仙台 この3つを一つにまとめてなおかつ下の図のように 一番上のものを加えて作りたいのですが 良いやり方はあるでしょうか? ID 店舗コード 店舗名 1 000 総本部 2 101 新宿 3 102 横浜 4 103 梅田 5 104 神戸 6 105 仙台 7 201 札幌 8 301 名古屋 9 401 大阪 10 402 京都 11 501 福岡 12 609 オーストラリア 13 601 上海 14 709 ニューヨーク 15 802 ソウル 16 909 北京

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

UNIONクエリをサブクエリとした物どうしを結合することで解決でき ますが、DBシステム毎に記述方法が微妙に異なります。 DBシステムを記述してください。カテゴリ的にはデータベースの方 ではないかと思いますよ。

  • bleis
  • ベストアンサー率68% (11/16)
回答No.1

こんな感じでしょうか。 -- 総本部 SELECT 1 AS ID, '000' AS '店舗コード', '総本部' AS '店舗名' UNION ALL -- 本部 SELECT   id + 1  , code  , name FROM   FrontOffices UNION ALL -- 国内支店 SELECT   id + 1 + (SELECT COUNT(*) FROM FrontOffices)  , code  , name FROM   Branches UNION ALL -- 海外支店 SELECT   id + 1 + (SELECT COUNT(*) FROM FrontOffices) + (SELECT COUNT(*) FROM Branches)  , code  , name FROM   OverSeasBranches ; ただ、テーブル設計を見直したほうが素直なSQLになると思いますよ。 例えば、本部、国内支店、海外支店でテーブルを分けるのではなく、店舗テーブルにまとめてしまい、本部/国内支店/海外支店を表す列を追加するなどです。