1

有2个这样的mysql表

表格1

--id-----config_name --1
-----操作系统--2
-----控制面板--3
-----带宽

表 2

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


现在我想像这样展示他们,只使用 MYSQL。

  1. 操作系统

    Windows 2008 = 20.00

    CentOs 5 = 00.00

  2. 控制面板

    whm/cPanel= 30.00

    Plesk = 50.00

这可能吗?所以现在“os”或“控制面板”被选择了一次,尽管如果我们使用 group by 或 join 它会出现两次。

使用单个 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 回答