如何将msql结果分成不同的html列

时间:2016-01-15 17:14:01

标签: php mysql database

我有一张桌子:

| s_id | s_date     | s_movie               | s_hour | s_price |
|    1 | 2015-11-11 | The lord of the rings |  11:00 |       5 |
|    2 | 2015-11-11 | The lord of the rings |  11:00 |       4 |
|    3 | 2015-11-11 | The lord of the rings |  11:00 |       4 |
|    4 | 2015-11-11 | Harry Potter          |  12:00 |       5 |
|    5 | 2015-11-11 | Harry Potter          |  12:00 |      13 |
|    6 | 2015-11-11 | Harry Potter          |  12:00 |      13 |
|    7 | 2015-11-11 | Harry Potter          |  12:00 |       5 |

结果:

$result = mysql_query("
    SELECT *
     , count(s_price) as uniq_p 
     , SUM(s_price) as uniq_all 
    from table 
    group 
    by s_movie
     , s_price 
    order 
    by s_movie desc
");

HTML表格显示:

+------------+------------+--------+-----+
| Date       | Movie      | Price  | Sum |
+------------+------------+--------+-----+
| 2015-11-11 | The lord.. | 2 x 4  |   8 |
| 2015-11-11 | The lord.. | 1 x 5  |   5 |
| 2015-11-11 | Harry..    | 2 x 5  |  10 |
| 2015-11-11 | Harry..    | 2 x 13 |  26 |

如何加入这样的结果?

+------------+-------------+---------+---------+-----+    
| Date       | Movie       | Price_1 | Price_2 | Sum |
+------------+-------------+---------+---------+-----+  
| 2015-11-11 | The lord..  |  1 x 5  |  2 x 4  |  13 |
| 2015-11-11 | Harry..     |  2 x 13 |  2 x 5  |  36 |

这是一个msql示例: http://sqlfiddle.com/#!2/2c0f4/2

1 个答案:

答案 0 :(得分:2)

当然,你可以在php中完成所有这一切,这可能是最好的方法。

现在,如果您仍想在数据库中充分利用它,可以执行此操作

<强>更新:

SELECT s_date, s_movie, 
       GROUP_CONCAT(CONCAT(price_count, ' x ', s_price) ORDER BY s_price DESC) prices, 
       SUM(s_price * price_count) price_sum
  FROM
(
  SELECT s_date, s_movie, s_price, COUNT(*) price_count, SUM(s_price) price_sum
    FROM table1
   GROUP BY s_date, s_movie, s_price
) q
 GROUP BY s_date, s_movie DESC

这将为您提供以下内容:

+---------------------+-----------------------+--------------+-----------+
| s_date              | s_movie               | prices       | price_sum |
+---------------------+-----------------------+--------------+-----------+
| 2015-11-11 00:00:00 | The lord of the rings | 1 x 5,2 x 4  |        13 |
| 2015-11-11 00:00:00 | Harry Potter          | 2 x 13,2 x 5 |        36 |
+---------------------+-----------------------+--------------+-----------+

以下是SQL Fiddle演示

现在,当您在结果集上进行迭代时,您可以explode() prices,列值。