我想知道该怎么做
我的意思是“你和19,389其他人”你如何识别他人的你。如果用户已登录并喜欢状态或喜欢的状态或类似facebook的内容。我想抓住“你”的一部分。但我似乎并不理解它背后的逻辑。
我正在使用php和jquery。你如何在sql中解决这个问题?还是真的是sql?你如何定义其他人的用户?
如果我以错误的方式做错或以错误的方式提问,请告诉我正确的方法和答案的人我非常需要你的帮助。
答案 0 :(得分:5)
只有一个查询,您可以这样做:
SELECT COUNT(user_id) AS everybody, SUM(user_id = "your_user_id") AS you FROM fb_likes WHERE post_id = 4;
然后如果you
大于零打印(实际上它必须是0或1):
You and [everybody - you] others like this.
其他
[everybody] like this.
答案 1 :(得分:4)
首先,当你点击"喜欢"在分配给帖子的数据库中有一个条目。所以,让我们说帖子的ID为1234567890,这样你就可以在数据库表中看到类似内容:
PostID UserID
1234567890 54543534
1234567890 75231415
1234567890 78653421
1234567890 99653221
// Query example
SELECT COUNT(*) FROM LikeTable WHERE PostID = 1234567890
// Return 4
首先,你可以算一下,这里有4个。
之后,检查当前登录用户的UserID是否在数据库中。
我们说我们是用户54543534. 我在数据库中,所以我喜欢这个帖子。
// Query example
SELECT PostID FROM LikeTable WHERE PostID = 1234567890 AND UserID = 54543534 LIMIT 1
// Return 1
我们说我们是用户8748977777. 我不是在数据库中,所以我不喜欢这个帖子。
// Query example
SELECT PostID FROM LikeTable WHERE PostID = 1234567890 AND UserID = 8748977777 LIMIT 1
// Return 0
所以我说IF / ELSE声明是:
IF I liked
You and COUNT - 1 others like this.
ELSE
COUNT like this. Click to like.
编辑:
我认为这样的事情会成功:
SELECT COUNT(PostID) AS All, SUM(UserID = X) AS Liked FROM LikedTable WHERE PostID = X
答案 2 :(得分:2)
查询其他人:
SELECT COUNT(userid) FROM likeTable WHERE postid = $postid
查询你:
SELECT COUNT(userid) FROM likeTable WHERE postid = $postid AND userid = $_SESSION['userid']
然后做:
if ($youCount == 1) {
echo "Liked by you and " . $othersCount - 1 . " others";
}
else {
echo "Liked by $othersCount people";
}
答案 3 :(得分:1)
我对最佳数据库模式知之甚少,但我看到的方式是,Facebook中的每个单词都是FB社交对象图上的节点。这可能意味着每个人都喜欢某个表上的单个数据库记录。要计算喜欢的数量,您只需对与帖子关联的类似记录执行COUNT
。
现在,如果是这样的话,那么在类似记录中包含一些识别信息对于执行它的人来说是微不足道的。最重要的是,它将是用户PK的FK。
因此,如果您在Facebook上登录,它就会知道您是谁以及您的关联用户ID是什么。对于它聚合喜欢的每个帖子,它可以反击检查您的用户ID到喜欢的用户ID FK,并确定您实际喜欢哪些帖子。因此,它可以有条件地显示You and 14,000 others like this
或14,001 like this
。
答案 4 :(得分:0)
努力理解这个问题,但我认为你可能会一次尝试做太多。
运行两个查询,一个检查“你”(你的会话ID等)是否在表中记录这个或拉动整个批次并使用in_array或类似的东西来查看“你”是否在列表中