2

複雑な結合クエリが機能しています。ただし、さまざまなテーブルからフィールドを取得することに加えて、特定の条件を満たすレコードの数をカウントしたいと思います。

たとえば、テーブルの1つはフォロワーであり、フォローされている特定の人(ユーザーIDで識別される)のフォロワーの数を数えたいと思います。この数は、異なるユーザーIDを持つフォロワーに関するクエリ全体のレコード数と同じにはなりません。

COUNTコマンドでこれを行う方法があると思いますが、構文がわかりません。

以下はクエリ内のクエリでそれを行うかもしれませんが、それは厄介であり、私はそれを行うためのより簡単な方法を探しています。提案をありがとう。

follow_tableID、、follower_id_followed_id

$res1 = mysql_query("SELECT * FROM follow_table WHERE follower_id= '$userid'");

//have list of all users this user is following
while($row1 = mysql_fetch_array($res1))
{
    $followed_id = $row1['followed_id'];
    $res2 = mysql_query("SELECT * FROM follow_table WHERE followed_id = '$followed_id'");
    echo mysql_num_rows($res2); // Echo the number of followers
}
4

2 に答える 2

3
SELECT 
    f1.followed_id                      --- all the people that $user follows
  , COUNT(*)        AS followers        --- and the number of their followers
FROM 
    follow_table AS f1
  JOIN 
    follow_table AS f2
      ON f2.followed_id = f1.followed_id
WHERE
    f2.follower_id = $userid            --- the specific $user
GROUP BY
    f1.followed_id ;
于 2012-08-11T21:11:49.963 に答える
1
SELECT COUNT(*) FROM follow_table ft WHERE ft.follower_id= '$userid' AND (
SELECT COUNT(*)
FROM follow_table ft2
WHERE ft2.follower_id = ft.follower_id) > 0

私があなたを理解していれば、これはすべてを1つのクエリにするのに役立つはずです.

于 2012-08-11T20:40:54.783 に答える