我有一个复杂的连接查询工作。但是,除了从不同的表中提取字段之外,我还想计算满足特定条件的记录数。
例如,其中一个表是关注者,我想要计算一个被跟踪的跟踪者的数量 - 由他们的用户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
}
答案 0 :(得分: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 ;
答案 1 :(得分: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
如果我理解你,这应该有助于在一个查询中进行所有操作。