首先看下面的查询
SELECT COUNT(id) AS total_record, id, modeller,
MONTHNAME(completed_date) AS current_month,
QUARTER(completed_date) AS current_quarter,
Difficulty,
YEAR(completed_date) AS current_year
FROM model
WHERE modeller != ''
AND completed_date BETWEEN '2010-04-01'
AND '2010-05-31' AND Difficulty != ''
GROUP BY Difficulty,
MONTH(completed_date) ORDER BY
MONTH(completed_date) ASC
我得到的结果是
Modeller Month Year Difficulty
XYZ Jan 2010 23
XYZ Jan 2010 14
XYZ Jan 2010 15
ABC Feb 2010 5
ABC Feb 2010 14
ABC Feb 2010 6
我想要像
这样的结果Modeller Month Year Difficulty
XYZ Jan 2010 23, 14, 15
ABC Feb 2010 5, 14, 6
我的数据库是我正在开发的应用程序的Mysql,所以任何帮助都会非常明显。
谢谢,
答案 0 :(得分:2)
答案 1 :(得分:0)
我想你想要GROUP_CONCAT()
。我已经简化了你的字段,所以你需要重新添加计算,但是这样的事情应该这样做:
SELECT modeller, month, year, GROUP_CONCAT(DISTINCT Difficulty)
FROM Model
WHERE $conditions
GROUP BY modeller, month, year
答案 2 :(得分:0)
很好,GROUP_CONCAT功能很强大,在这种情况下可能是一个完美的解决方案。
但请注意,在大型系统中,这种操作可以属于应用程序层而不是数据库查询,从而最大限度地提高维护,重用和减少特定RDBMS中的依赖性。
替代(更多工程)等待它使用DAO模式。与http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
中记载的一样