mysql喜欢你和其他人

时间:2012-04-19 13:09:01

标签: php jquery mysql sql ajax

我想知道该怎么做

enter image description here

我的意思是“你和19,389其他人”你如何识别他人的。如果用户已登录并喜欢状态或喜欢的状态或类似facebook的内容。我想抓住“你”的一部分。但我似乎并不理解它背后的逻辑。

我正在使用php和jquery。你如何在sql中解决这个问题?还是真的是sql?你如何定义其他人的用户?

如果我以错误的方式做错或以错误的方式提问,请告诉我正确的方法和答案的人我非常需要你的帮助。

5 个答案:

答案 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 this14,001 like this

答案 4 :(得分:0)

努力理解这个问题,但我认为你可能会一次尝试做太多。

运行两个查询,一个检查“你”(你的会话ID等)是否在表中记录这个或拉动整个批次并使用in_array或类似的东西来查看“你”是否在列表中