0

我在mysql数据库中有两个表

  1. tbl_comments
  2. tbl_user_votes

tbl_user_votes 中有三个字段

1. comment_id, 2. user_id, 3.vote_type ('L' OR 'D') (L for Like, D For Dislike)

我有一个分页方案,据此我的每个网页都有 20 条评论。每条评论都有一个喜欢和不喜欢的按钮。当一个登录的用户点击喜欢或不喜欢时,三个值被插入tbl_users_votes, 1. comment_id, 2. user_id, 3. vote_type (L OR D).

我希望当页面重新加载时,他点击“喜欢”或“不喜欢”的所有评论必须在评论下方显示“你喜欢”或“你不喜欢”。

我的问题是,我不会为这个问题制定一个有效的算法。我想过这样的解决方案。

我必须为每个这样的评论运行 SQL 查询"SELECT * From tbl_user_votes where comment_id = xyz and user_id = xyz",然后检查是否存在针对该 user_id 和 comment_id 的某些值。如果存在,那么我检查每个评论的值和 Put 和 If else 条件,如下所示

If(vote_found)
  If(vote_type=='L')
   echo "You Like"
  else if(vote_type=='D')
   echo "You Dislike'

但我认为这不是一种有效的方法。它看起来非常内存和耗时的过程,好像页面上有 20 条评论,并且每条评论对数据库的 sql 查询非常昂贵。

任何人都可以有一些更好,更有效的方法来处理这个问题。

4

1 回答 1

0

我建议您使用一个查询,该查询也可以在一个记录集中给您投票。

SELECT
  tbl_comments.*,
  tbl_users.*
FROM
  tbl_comments LEFT JOIN tbl_users
  ON tbl_comments.user_id = tbl_users.user_id2
WHERE
  (tbl_users.user_id="xxx")
  OR (tbl_users.user_id IS NULL);

我不知道您的索引是什么,tbl_users所以我假设user_id2,如果需要,请更改它。

UsingLEFT JOIN将为您提供该用户的所有评论,如果存在,则为用户投票。如果tbl_comments.user_idNULL,则没有评论。

于 2013-03-04T07:17:13.620 回答