我想列出所有团队,然后统计每个团队在第二张表中出现的次数。有些用户不在第二个表中,因此计数为零。问题是当我使用计数功能时,它只列出第二个表中的用户。我如何计数,并列出0,如果他们不出现在第二个表中?MySQL:在第二张表中统计匹配的行
$query = "SELECT t.id as id, t.t_name as name, t.t_city as city, (count(pd.rs)) as pd FROM #__bl_regions as r, #__bl_teams as t, #__bl_paid as pd WHERE t.id != 0 AND t.id != 1 AND (t.id IN($teams)) AND r.id = ".$t_id." AND pd.rs = 1 AND pd.t_id = ".$t_id." ORDER BY t.t_name";
$db->setQuery($query);
$players = $db->loadObjectList();
尝试左连接
好了,因为我是其中3个表,我相信我一定要使用2个查询。同样的事情仍在发生,只列出了有数的学校。 #__bl_paid是我要计算的表格,#__bl_teams是我想要列出的所有表格。
$query = "SELECT t.id as id FROM #__bl_regions as r, #__bl_teams as t WHERE t.id != 0 AND t.id != 1 AND (t.id IN($teams)) AND r.id = ".$t_id." ORDER BY t.t_name";
$db->setQuery($query);
$players1 = $db->loadResultArray();
if ($players1){
$players2 = implode(",",$players1);
}else{
$players2 = 0;
}
$query = "SELECT t.id as id, t.t_name as name, t.t_city as city, coalesce((count(pd.rs)),0) as pdc FROM #__bl_paid as pd LEFT JOIN #__bl_teams as t ON pd.t_id = t.id WHERE (t.id IN($players2)) ORDER BY t.t_name";
$db->setQuery($query);
$players = $db->loadObjectList();
现在尝试这个权利.... – user1232073 2012-02-27 18:27:11
好了,因为我被替换包括3个表格,我相信我必须使用2个查询。同样的事情仍在发生,只列出了有数的学校。 – user1232073 2012-02-27 19:33:55