gpt4 book ai didi

php - 查询中的 COUNT() Likes 返回意外结果

转载 作者:行者123 更新时间:2023-11-30 23:22:37 25 4
gpt4 key购买 nike

我正在创建某种社交媒体,例如 facebook,我正在尝试使用以下查询获取帖子的点赞数。

SELECT posts.object_ID, posts.user_ID, posts.datetime, posts.text, 
COUNT(likes.object_ID) AS likes,
SUM(IF(likes.user_ID=?, 1, 0)) AS allowLike, users.first_name,
users.last_name, userinfo.image_ID
FROM posts
LEFT JOIN users ON users.ID=posts.user_ID
LEFT JOIN friends ON (friends.user_ID_1=? OR friends.user_ID_2=?)
AND friends.approved=1
LEFT JOIN userinfo ON users.ID=userinfo.user_ID
LEFT JOIN likes ON likes.object_ID=posts.object_ID
WHERE ". $str ."
GROUP BY posts.object_ID
ORDER BY posts.datetime DESC
LIMIT 0,30

$str 的值只是一种过滤 friend 和东西的机制,例如:

$str = "(posts.user_ID=friends.user_ID_1 OR posts.user_ID=friends.user_ID_2) OR posts.user_ID=? ";

现在发生的是 COUNT(likes.object_ID) 返回 4 而 SUM(IF(likes.user_ID=?, 1, 0)) 也返回 4 .

令人惊讶的是,我认为这是实际的点赞数乘以我拥有的 friend 数 (4),因为有 2 个点赞的帖子显示为 8 个点赞。昨天我有 3 个 friend ,它显示为 3。只有当帖子是我自己的时候才会发生。

我使用一个非常相似的查询来获取评论,但没有发生任何奇怪的事情。

有什么想法吗?

编辑:它不仅限于我自己的帖子。我刚刚在别人的帖子中发现了一个案例。尽管如此,并不是每个帖子都会发生这种情况……这很奇怪。而且,它不受我自己喜欢的限制......

EDIT2:在“重新点赞”我在 EDIT1 中谈论的帖子后,它显示为一个,并且在几次刷新后它仍然显示为 1 个赞。奇怪..

最佳答案

您的问题可能与您的 WHERE 子句有关。一个参数没有被解析;您的 WHERE 只是一个长 varchar,您的 RDMS 将其解释为 TRUE。

关于php - 查询中的 COUNT() Likes 返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com