0

これをどうやってやるのかしら

ここに画像の説明を入力してください

私は「あなたと他の19,389人」を意味します。他の人からあなたをどのように識別します。ユーザーがログインしていて、ステータスが好きであるか、ステータスが好きであるか、Facebookのようなものである場合。「あなた」の部分をキャッチしたいです。しかし、私はその背後にある論理を理解していないようでした。

私はphpとjqueryを使用しています。これをSQLでどのように整理しますか?それとも本当にSQLですか?他のユーザーからユーザーをどのように定義しますか?

私が間違ったやり方をしている、または間違った方法で質問している場合は、正しい方法を教えてください。私があなたの助けを必要としている答えの人たち。

4

5 に答える 5

5

クエリを1つだけ使用すると、次のように実行できます。

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.
于 2012-04-19T13:19:47.923 に答える
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
于 2012-04-19T13:13:41.873 に答える
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";
}
于 2012-04-19T13:15:19.407 に答える
1

最適なデータベーススキーマについてはよくわかりませんが、Facebookの用語のように、すべてがFBのソーシャルオブジェクトグラフ上のノードであると私は考えています。これはおそらく、すべてのlikeがいくつかのテーブル上の個別のデータベースレコードであることを意味します。いいねの数を数えるにはCOUNT、投稿に関連付けられたいいねのレコードを実行するだけです。

その場合は、誰がそれを実行したかについての同様のレコードにいくつかの識別情報を含めるのは簡単です。頭のてっぺん、それはユーザーのPKのFKになります。

したがって、Facebookにログインしている場合は、自分が誰であり、関連付けられているユーザーIDが何であるかがわかります。いいねを集約するすべての投稿について、ユーザーIDをいいねのユーザーID FKと照合し、実際にいいねした投稿を特定できます。したがって、条件付きでまたはのいずれYou and 14,000 others like thisかを表示できます14,001 like this

于 2012-04-19T13:14:31.780 に答える
0

質問を理解するのに苦労していますが、あなたは一度にやりすぎているのではないかと思います。

2つのクエリを実行します。1つは「あなた」(セッションIDなど)がこれを記録するテーブルにあるかどうかを確認するか、ロット全体をプルしてin_arrayなどを使用して「あなた」がリストにあるかどうかを確認します。

于 2012-04-19T13:15:07.637 に答える