很难弄清楚如何进行 mysql 查询并将数据输出到如下表所示的表中。
现在已经玩了几天没有运气,所以任何帮助将不胜感激。
下图显示了我的 3 个数据库表(以简单形式)以及我尝试使用 PHP/MYSQL 输出的内容。
该图像还显示了每个用户在每个类别中的列表总数(计数),我无法弄清楚我是如何将它们连接在一起的。
希望这有点道理!
最初,你可以这样做,
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
但我猜你的桌子上有未知数量的。动态 SQLcat_name
更受欢迎,
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;