PHP : select 来自 MySQL 的多个 count(id) 作为一个查询
PHP : select multiple count(id) from MySQL as one query
我需要在一个查询中优化以下代码:
$query = 'select count(id) as featured_ads from #___properties WHERE featured = 1 and approved =1';
$db->setQuery($query);
$featured_ads = intval($db->loadResult());
$query = 'select count(id) as wait_ads from #___properties WHERE approved =0 and canceled<>"1" ';
$db->setQuery($query);
$wait_ads = intval($db->loadResult());
$query = 'select count(id) as total_users from #__sresuad WHERE gid = 18 ';
$db->setQuery($query);
$total_users = intval($db->loadResult());
我该怎么办?
您希望在一次查询中返回所有计数吗?解决这个问题的一个简单方法是让所有 SELECT 为外部 SELECT:
定义字段
SELECT
(select count(id) from #___properties WHERE featured = 1 and approved =1) AS featured_ads,
(select count(id) from #___properties WHERE approved =0 and canceled<>"1") AS wait_ads,
(select count(id) from #__sresuad WHERE gid = 18) AS total_users
正如 Lodder 在他的评论中所建议的那样,手动编写 SQL 查询很容易出现错误和安全漏洞,因此您可能希望尽可能避免它。
我需要在一个查询中优化以下代码:
$query = 'select count(id) as featured_ads from #___properties WHERE featured = 1 and approved =1';
$db->setQuery($query);
$featured_ads = intval($db->loadResult());
$query = 'select count(id) as wait_ads from #___properties WHERE approved =0 and canceled<>"1" ';
$db->setQuery($query);
$wait_ads = intval($db->loadResult());
$query = 'select count(id) as total_users from #__sresuad WHERE gid = 18 ';
$db->setQuery($query);
$total_users = intval($db->loadResult());
我该怎么办?
您希望在一次查询中返回所有计数吗?解决这个问题的一个简单方法是让所有 SELECT 为外部 SELECT:
定义字段SELECT
(select count(id) from #___properties WHERE featured = 1 and approved =1) AS featured_ads,
(select count(id) from #___properties WHERE approved =0 and canceled<>"1") AS wait_ads,
(select count(id) from #__sresuad WHERE gid = 18) AS total_users
正如 Lodder 在他的评论中所建议的那样,手动编写 SQL 查询很容易出现错误和安全漏洞,因此您可能希望尽可能避免它。