MySQL:为用户统计选票
我正在寻找一种在MySQL数据库中为用户计票的方法 表格和列:MySQL:为用户统计选票,mysql,Mysql,我正在寻找一种在MySQL数据库中为用户计票的方法 表格和列: companion - companion_id - news_id - user_id news - news_id - user_id user - user_id - user_name vote - vote_id - news_id - user_id 查看 条件: companion - companion_id - news_id - user_id news - news_id - u
companion
- companion_id
- news_id
- user_id
news
- news_id
- user_id
user
- user_id
- user_name
vote
- vote_id
- news_id
- user_id
查看
条件:
companion
- companion_id
- news_id
- user_id
news
- news_id
- user_id
user
- user_id
- user_name
vote
- vote_id
- news_id
- user_id
- 每个用户都可以有几个新闻
- 每一条新闻都有好几票
- 每个新闻都可以有几个同伴(同伴是用户)
- 每个用户都可以为多条新闻投票(对于此查询不重要)
companion
- companion_id
- news_id
- user_id
news
- news_id
- user_id
user
- user_id
- user_name
vote
- vote_id
- news_id
- user_id
现在,我试图计算出一个用户总共有多少票:他自己的新闻,一个他作为同伴链接的新闻。解决方案应该是一个单个MySQL查询
用户2示例:
companion
- companion_id
- news_id
- user_id
news
- news_id
- user_id
user
- user_id
- user_name
vote
- vote_id
- news_id
- user_id
- 用户2有1篇新闻文章。这篇新闻文章有2票
- User2是1文章的同伴。这篇新闻文章获得3票
- 用户2应拥有5张选票
companion
- companion_id
- news_id
- user_id
news
- news_id
- user_id
user
- user_id
- user_name
vote
- vote_id
- news_id
- user_id
下面的查询结果是31而不是5,因为它无法在两个不同的表上对其进行分组
SELECT u.user_name,
u.user_id,
COUNT(v.vote_id) AS votes
FROM user u,
news n,
companion c,
vote v
WHERE u.user_id = 2 AND
(
(
u.user_id = n.user_id AND
n.news_id = v.news_id
) OR
(
u.user_id = c.user_id AND
c.news_id = v.news_id
)
)
GROUP BY u.user_id
LIMIT 1
不加入工会是关键。请注意,您必须更改用户id两次。请随意加入users表以获得真实的用户名 现场观看它的工作
询问代码的问题必须证明对正在解决的问题的最低理解。包括尝试的解决方案,以及它们不起作用的原因。