我有以下數據庫。一位用戶可以撰寫一篇或多篇文章。投票是多對多的。需要MySQL數據庫的複雜sql查詢
用戶寫一篇文章。任何人都可以投票,因此投票將保存在投票表中。
我需要顯示頁面上的所有帖子。在每篇文章中,需要顯示帖子的作者,post_votes和作者的投票。
我的表是:
Table: user
id | user_name
1 | John
2 | Sam
3 | Susan
Table: post
id | post_title | user_id
1 | Hello | 1
2 | Sunday | 1
3 | Monday | 2
4 | Sun | 1
5 | Sun | 3
Table: votes
id | post_id
1 | 1
2 | 1
3 | 3
4 | 2
5 | 3
6 | 1
我需要查詢返回的結果集如下:
post_id | post_votes | user_id | user_votes
1 | 3 | 1 | 4
2 | 1 | 1 | 4
3 | 2 | 2 | 2
4 | NULL | 1 | 4
5 | NULL | 3 | NULL
我試過各種組合,但我的大腦是不會工作。另外,如果有更好的方法來設計數據庫,那麼可以很容易地獲得上述內容。
究竟是票表?就目前而言,似乎用戶可以爲任何帖子投票多次。 – 2012-07-09 18:09:24
@GordonLinoff加入職位表和投票表,得到一個職位的總票數,然後再次加入投票表和投票表,以獲得用戶的總票數,但我剛剛迷失在中間。一直在嘗試一天,沒有運氣。 – WebNovice 2012-07-09 18:10:41
@MarcB是的,任何人都可以在帖子上投票,並可以根據上表進行多次投票。實際上,我在投票表中有一個IP地址字段,它拒絕同一IP的多個投票。但這在這裏是無關緊要的。投票表中的每個記錄表示對該特定帖子投1票。 – WebNovice 2012-07-09 18:11:37