2

我有一个复杂的连接查询工作。但是,除了从不同的表中提取字段之外,我还想统计满足某些条件的记录数。

例如,其中一张表是追随者,我想计算一个给定的人被关注(由他们的用户 ID 标识)有多少追随者。此数字与来自具有不同用户 ID 的关注者的整体查询的记录数不同。

我在想有一些方法可以用 COUNT 命令来做到这一点,但我对语法一无所知。

以下可能使用查询中的查询来完成,但它很混乱,我正在寻找一种更简单的方法来做到这一点。感谢您的任何建议。

follow_table: ID, 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

如果我理解你,这应该有助于在一个查询中完成所有操作。

于 2012-08-11T20:40:54.783 回答