我有四张桌子
我需要计算城市页面上每个类别的公司数量。
现在,我是如此丑陋的循环
$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或更多)上对数据库的查询就会变得非常多。请帮我优化查询
答案 0 :(得分:0)
试试这个:
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
答案 1 :(得分:0)
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