查询和回声解决方案?

时间:2012-12-29 12:42:39

标签: php mysql sql

很难尝试解决如何创建mysql查询并将数据输出到我下面的表格中。

现在玩了几天没有运气,所以任何帮助都会非常感激。

下图显示了我的3个数据库表(以简单形式)以及我尝试使用PHP / MYSQL输出的内容。

图像还显示了每个类别的每个用户的列表总量(计数),我无法弄清楚我是如何将它们加在一起的。

希望这有一定道理!

http://img.photobucket.com/albums/v432/Winegums/table_zps2b57f483.jpg

1 个答案:

答案 0 :(得分:0)

最初,你可以这样做,

SELECT  a.user_name,
        SUM(CASE WHEN c.cat_name = 'books' THEN 1 ELSE 0 END) books,
        SUM(CASE WHEN c.cat_name = 'videos' THEN 1 ELSE 0 END) videos
FROM    users a 
        LEFT JOIN downlods b
            ON a.user_ID = b.user_ID
        LEFT JOIN download_cats c
            ON b.cat_id = c.cat_id
GROUP BY a.user_name

但我猜你桌上有{em>未知号码 cat_name。更优选动态SQL

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(CASE WHEN c.cat_name = ''',
      cat_name,
      ''' THEN 1 ELSE 0 END) AS ',
      cat_name
    )
  ) INTO @sql
FROM download_cats;

SET @sql = CONCAT(' SELECT  a.user_name, ', @sql, ' 
                    FROM    users a 
                            LEFT JOIN downlods b
                                ON a.user_ID = b.user_ID
                            LEFT JOIN download_cats c
                                ON b.cat_id = c.cat_id
                    GROUP BY a.user_name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;