将重复项合并为一行,并使用php汇总值

时间:2009-09-29 02:26:13

标签: php mysql

我有一张表,其中包含以下行...

ID     | TITLE   |   ARTIST    |   ADDED               |  HITS | HITS THIS WEEK
--------------------------------------------------------------------------------
7505   | Track 2 |   Artist 1  |   2009-08-24 10:32:41 |  1539 |  2
7483   | Track 2 |   Artist 1  |   2009-08-23 16:58:35 |  1450 |  3
7324   | Track 1 |   Artist 1  |   2009-08-14 11:28:18 |  5291 |  1
7320   | Track 1 |   Artist 1  |   2009-08-14 10:24:17 |  2067 |  1

我想要做的是让重复项加起来hitshits this week并显示为一行。

我想获取mysql数据(带有重复项),然后使用php我想将重复项总结为一行用于echo'ing。

有人能告诉我怎么会这样做吗?

编辑:

继承我当前的SQL查询...

SELECT `files`.`file_id` , `files_meta`.`title` , `files_meta`.`artists` , `files`.`added` , `files`.`uniquehits` , `files`.`uniquehits_week` , `files_meta`.`filename`
FROM promo_artists
INNER JOIN promo_files ON promo_artists.id = promo_files.artist_id
INNER JOIN files ON files.file_id = promo_files.file_id
INNER JOIN files_meta ON files.file_id = files_meta.file_id
WHERE username = '$username' ORDER BY `files`.`added` DESC

2 个答案:

答案 0 :(得分:2)

我倾向于在S​​QL中这样做:

SELECT track, artist, SUM(hits) AS hits, SUM(hits_this_week) AS hits_this_week
  FROM Atable
 GROUP BY track, artist;

这节省了必须在PHP中进行计算,并减少了PHP和DBMS之间的流量。

答案 1 :(得分:0)

foreach($rows as $row) {
 $data[$artist][$track] += $hits;
}