1

このような2つのmysqlテーブルがあります

表1

--id ----- config_name
--1----- OS
--2----- Control Panel
--3----- Bandwidth

表2

id --config_id ---config_Option_name---価格
1--------1 ------------- Windows 2008 -------- 20.002
--- -----1------------- CentOs 5 ---------------- 0.00
3 --------- 2-- ----------- whm / cPanel ----------- 30.00
4 -------- 2------------- Plesk -------------------50.00


ここで、MYSQLのみを使用して、このように表示したいと思います。

  1. OS

    Windows 2008 = 20.00

    CentOs 5 = 00.00

  2. コントロールパネル

    whm/cPanel = 30.00

    Plesk = 50.00

これは可能ですか?そのため、「os」または「コントロールパネル」が1回選択されますが、groupbyまたはjoinを使用すると2回選択されます。

単一のSQLステートメントを使用する

4

1 に答える 1

1

このように出力をフォーマットするためにSQLを使用しないでください。クライアント側で行う必要があります。

とにかくここにSQLのみでそれを行うためのクエリがあります(SQLFiddleデモ):

select cfgN from
(
   select concat('\t',
                 CONFIG_OPTION_NAME,
                 '=',FORMAT(Price, 2) ) as cfgN, 
                 config_id,
                 t2.ID,
                 CONFIG_OPTION_NAME,
                 Price 
   from Table2 t2
   join Table1 t1 on (t2.config_id=t1.id)

   union all

   select concat(cast(id as char),
                 '. ',CONFIG_NAME) as cfgN, 
          id config_id,
          null ID,
          CONFIG_NAME, 
          null Price 
   from table1 

) t3 order by config_id,id
于 2012-12-05T08:41:04.960 に答える