【发布时间】:2013-11-08 14:12:18
【问题描述】:
我正在寻找一种方法来计算 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
条件:
- 每个用户可以有几个新闻
- 每个新闻都可以有多个投票
- 每个新闻可以有多个同伴(同伴是用户)
- 每个用户可以投票给几个新闻(对于这个查询不重要)
目标:
现在我想弄清楚一个用户总共有多少票:在他自己的新闻上,他作为同伴链接在一起。解决方案应该是单个 MySQL 查询。
User2 的示例:
- User2 有 1 篇新闻文章。这篇新闻文章有 2 票。
- User2 是 1 文章的伴侣。这篇新闻文章有 3 票。
- User2 应该有 5 票
方法:
以下查询结果为 31 而不是 5,因为它无法将其正确分组到 2 个不同的表中。
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
【问题讨论】:
-
要求代码的问题必须表明对所解决问题的最低理解。包括尝试的解决方案,以及它们为什么不起作用。
标签: mysql