我有三个连接的表。我几乎有了解决方案,但这里似乎出现了一个小问题。这是声明:
SELECT items.item,
COUNT(ratings.item_id) AS total,
COUNT(comments.item_id) AS comments,
AVG(ratings.rating) AS rate
FROM `items`
LEFT JOIN ratings ON (ratings.item_id = items.items_id)
LEFT JOIN comments ON (comments.item_id = items.items_id)
WHERE items.cat_id = '{$cat_id}' AND items.spam < 5
GROUP BY items_id ORDER BY TRIM(LEADING 'The ' FROM items.item) ASC;");
我有一个名为 items 的表,每个项目都有一个名为 items_id 的 id(注意它是复数)。我有每个项目的个人用户评论表,以及每个项目的评分表。(最后两个有一个名为“item_id”的对应列)。
我只是想分别计算评论和评分总数(每项)。以我上面的 SQL 语句的方式,它们是一个总数。
- 注意,total 是评分的总和。这是一个糟糕的命名方案,我需要修复!
更新:“总计”似乎算不错,但是当我向“评论”表添加评论时,COUNT 函数会影响“评论”和“总计”,并且似乎等于组合输出。