有两张桌子。一个是用户信息“用户”,一个是评论信息“评论”。
我需要在users表中创建新字段“comments”,其中包含该用户的注释数。表“comments”具有“user”字段,其中包含该评论的用户ID。
到目前为止,每个用户计算评论数量的最佳方法是什么?
使用php,你应该编写脚本来选择每个用户并计算他的评论数量,然后更新“评论”字段。这对我来说并不难,但很无聊。
是否可以在没有php的情况下进行,仅在MySQL中进行?
答案 0 :(得分:2)
UPDATE TABLE users SET CommentCount = (SELECT COUNT(*) FROM comments WHERE AuthorUserId = users.id)
答案 1 :(得分:1)
为什么要将它存储在那里? 为什么不直接显示它的组合查询?
select users.name, count(comments.id) as comment_count
from users
join comments on users.id=comments.user_id
group by users.id
如果你想按自己的方式去做,那就包括
update users set comment=comment+1 where id=$user_id
进入存储评论的脚本。
和
update users set comment=comment-1 where id=$user_id
进入用户可以删除其评论的地方。否则,当用户添加新的通信并且您尚未运行脚本时,您的数据可能会不同步。
答案 2 :(得分:1)
是的,有可能。
这称为table joining
。
您不会向users
表添加其他字段,而是添加到resulting
表。
SELECT users.*, count(comments.id) as num_comments
FROM users,comments
WHERE comments.cid=users.id
GROUP BY users.id
这样的查询是relational databases
发明的。不要将其还原为纯文本文件状态。这样做的原因有很多
http://en.wikipedia.org/wiki/Database_normalization< - 要阅读的好文字