在這種情況下,最好的方法是創建一個新表來跟蹤喜歡。所以假設你有表posts
,其中有一列post_id
其中包含所有的帖子(用戶可以投票)。而你有另一個表users
與列user_id
,其中包含所有的用戶。
您應創建一個表格likes
,該表格至少有兩列,如like_postid
和like_userid
。現在,每當用戶喜歡帖子,在該表格中創建一個新的行,其中帖子的ID(來自posts
的值爲post_id
)和喜歡帖子的用戶的id(user_id
的值) 。當然,您可以在likes
表中輸入更多列(例如,以便跟蹤何時創建類似)。
你在這裏有什麼叫做many-to-many relationship。谷歌它得到一些關於它的更多信息,並找到更多關於如何正確實施它們的建議(你會發現逗號分隔的ID列表不會是最佳實踐之一)。
根據意見更新: 如果我是正確的;你想獲得所有對藝術家投票的用戶(按名稱排序)的列表。你應該這樣做:
SELECT Artists.Name, User.Name
FROM Artists
JOIN Votes
ON Votes.page_ID = Artists.ID
JOIN Users
ON Votes.Votes_Userid = Users.User_ID
WHERE Artists.Name = "dfgdfg"
ORDER BY Users.Users_Name
這裏有一件奇怪的事情;您投票表中包含藝術家ID的列似乎被稱爲page_ID
。此外,你在列名中有點不一致(不是很糟糕,但是如果你希望在單獨放置6個月後能夠理解你的代碼,請記住這一點)。在你的評論中你說你只做一個連接,但你實際上做了兩個連接。如果你指定了兩個表名(就像你做的那樣:JOIN Users, Votes
SQL實際上加入了這兩個表)
根據你在評論中發佈的查詢,我可以告訴你沒有太多的使用連接的經驗。我建議你閱讀如何使用它們,它會真正提高你編寫好代碼的能力。
聽起來不錯。謝謝:)將開始計劃它,看看我怎麼走:) – Andrew 2012-08-08 07:54:05
我的想法atm是使用類似於這樣的mysql語句:SELECT Artists.Name,User_Name,Votes_vote FROM Artists WHERE Artists.Name =「dfgdfg」 JOIN Users ,票數 ON Artists.ID = Votes.page_ID,Users.User_ID = Votes.Votes_Userid ORDER BY User_Name由於我相信你只能通過這個過程加入一個表,所以很可能存在連接方面的問題,但這會是想法。這是對的嗎? – Andrew 2012-08-08 08:12:46
我已更新我的答案以回答您的評論。 – 2012-08-08 08:20:05