[编辑:]我的附加价值(1052,10,3,1290839091,1)更好地行使的问题,不得不 “ITEM_ID” 添加到子查询提取最新票。
耶!最后一个stackoverflow问题,我可以真正回答!我一直在浏览一周,寻找短暂的&甜美的&走上我的小巷。感谢一个有趣的SQL问题!
首先,您需要提取最新票。 (voter_id,item_id,vote_date)的组合更适合这种工作方式!
SELECT
voter_id, item_id, MAX(vote_date) AS vote_date
FROM
votes
GROUP BY
voter_id, item_id
结果:
+----------+---------+------------+
| voter_id | item_id | vote_date |
+----------+---------+------------+
| 3 | 9 | 1275021495 |
| 3 | 10 | 1290839091 |
| 27 | 9 | 1273770151 |
| 45 | 9 | 1274896188 |
| 181 | 9 | 1290839090 |
+----------+---------+------------+
然后你需要加入原始表对这些结果。一个子选择将完成这项工作。请注意复制&如何上面的查询粘贴到下面的加盟,但现在它定名为“TMP”:
SELECT
v.*
FROM (
SELECT
voter_id, item_id, MAX(vote_date) AS vote_date
FROM
votes
GROUP BY
voter_id, item_id
) tmp
INNER JOIN
votes v ON ( v.vote_date = tmp.vote_date
AND v.voter_id = tmp.voter_id
AND v.item_id = tmp.item_id
)
结果:
+---------+---------+----------+------------+------+
| vote_id | item_id | voter_id | vote_date | vote |
+---------+---------+----------+------------+------+
| 60 | 9 | 27 | 1273770151 | 1 |
| 153 | 9 | 45 | 1274896188 | 1 |
| 164 | 9 | 3 | 1275021495 | 2 |
| 1051 | 9 | 181 | 1290839090 | 1 |
| 1052 | 10 | 3 | 1290839091 | 1 |
+---------+---------+----------+------------+------+
我相信你知道怎么从这里做。 ......啊,妈的,我不能帮助我自己,这是太可爱了:
SELECT
v.item_id, SUM(2 - v.vote) AS likes, SUM(v.vote - 1) AS dislikes
FROM (
SELECT
voter_id, item_id, MAX(vote_date) AS vote_date
FROM
votes
GROUP BY
voter_id, item_id
) tmp
INNER JOIN
votes v ON ( v.vote_date = tmp.vote_date
AND v.voter_id = tmp.voter_id
AND v.item_id = tmp.item_id
)
GROUP BY
v.item_id
结果:
+---------+-------+----------+
| item_id | likes | dislikes |
+---------+-------+----------+
| 9 | 3 | 1 |
| 10 | 1 | 0 |
+---------+-------+----------+
谢谢朱利叶斯。这确实是很有意义的,并且感谢你写出这样的细节,唯一的问题是,我无法让它工作:)此代码似乎找到了每个用户对所有item_ids的单次最新投票。目前有127个不同的选民在4900个参赛作品中有12000张选票,这个查询只返回127个结果,而不是每个4900的得分。这是否有意义?希望我的原始问题很明确。你的最后一个“结果”框是我所追求的,但是每一个条目都有一行,并且能够总结喜欢的......感谢你。 – noahkuhn 2011-02-24 05:09:00
哎呀,是的,我犯了一个小错误。我编辑了答案。现在应该工作! – 2011-02-24 07:10:49
这是巧妙的朱利叶斯,非常感谢你的帮助。唯一的最后一个好处就是能够对喜欢的列进行总结,但是我希望可以将其排除...... – noahkuhn 2011-02-24 15:48:49