我有一张桌子:
| 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
答案 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
列,
列值。