Mysql 从四个表中选择count
我有四张桌子Mysql 从四个表中选择count,mysql,sql,select,count,group-by,Mysql,Sql,Select,Count,Group By,我有四张桌子 公司(字段:id、名称) 城市(字段:id、名称) 类别(字段:id、名称) 城市\类别\公司(字段:公司\ id、城市\ id、类别\ id) 我需要在城市页面上统计每个类别中的公司数量 现在,我在一个丑陋的周期里做这件事 $q = mysqli_query($db, "SELECT * FROM `categories`"); while ($r = mysqli_fetch_assoc($q)) { $r2 = mysqli_fetch_assoc(
$q = mysqli_query($db, "SELECT * FROM `categories`");
while ($r = mysqli_fetch_assoc($q)) {
$r2 = mysqli_fetch_assoc(
mysqli_query($db, "SELECT COUNT(`company_id`) AS `num` FROM `city_category_company` WHERE `city_id` = '{$city['id']}' AND `category_id` = '{$r['id']}'")
);
}
但若我有很多类别,那个么在一个页面(50个或更多)上就会有很多对数据库的查询。请帮助我优化查询尝试以下操作:
SELECT c.id, c.name, COUNT(ccc.company_id) AS num
FROM city_category_company ccc
INNER JOIN categories c ON ccc.category_id = cc.id
WHERE ccc.city_id={city_id}
GROUP BY c.id
您可以使用“按类别\u id分组”
SELECT COUNT(co.id) AS company_count, cc.category_id, ca.name AS category_name
FROM companies co
INNER JOIN city_category_company cc ON co.id=cc.company_id
INNER JOIN categories ca ON ca.id=cc.category_id
GROUP BY cc.category_id, ca.name