我有两个表在mysql数据库
- tbl_comments
- 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条评论。每个评论都有一个喜欢和不喜欢的按钮。当登录用户点击Like或Dislike时,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查询非常昂贵。
有没有更好更有效的方法来处理这个问题呢
我建议您使用一个查询,它将为您提供一个记录集中的投票。
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
,如果需要的话改变它。
使用LEFT JOIN
将给出该用户的所有评论,如果存在,则为用户投票。如果tbl_comments.user_id
是NULL
,则没有注释