[編輯:]我的附加價值(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