我正在尝试加入两个表。我想要product_category
表中的所有列(现在总共有6个),并计算products_has_product_category
表中每个类别中的产品CatCount的数量。我的查询结果是第一个类别为1行,总数为68,当我要查找每个类别的6行时。
<?php
$result = mysql_query("
SELECT a.*, COUNT(b.category_id) AS CatCount
FROM `product_category` a
LEFT JOIN `products_has_product_category` b
ON a.product_category_id = b.category_id
");
while($row = mysql_fetch_array($result)) {
echo '
<li class="ui-shadow" data-count-theme="d">
<a href="' . $row['product_category_ref_page'] . '.php" data-icon="arrow-r" data-iconpos="right">' . $row['product_category_name'] . '</a><span class="ui-li-count">' . $row['CatCount'] . '</span></li>';
}
?>
我已经为此工作了几个小时,对于在我做错事情上的任何帮助,我将不胜感激。
参考方案
在没有GROUP BY
子句的情况下,COUNT()
聚合只能返回一行,保存通过WHERE
子句过滤后的表总数。我怀疑您是要在GROUP BY b.category_id
中针对子查询的LEFT JOIN
:
SELECT
a.*,
catcount
FROM
product_category a
LEFT JOIN (
SELECT category_id, COUNT(*) AS catcount
FROM products_as_product_category
GROUP BY category_id
) subcount ON a.product_category_id = subcount.category_id
因为MySQL宽容GROUP BY
子句的内容和存在,所以您的查询在语法上首先是成功的。在大多数其他RDBMS中,由于缺少GROUP BY
,它将失败。根据表product_category
的内容,MySQL可能允许您在没有联接的子查询的情况下执行上述操作,而是在product_category
子句中包含了GROUP BY
的正确列,但我不知道该表的内容不能肯定地说,上述方法是标准的,并且可以在不依赖MySQL宽容的情况下跨其他RDBMS移植。
最后一点,尽管我已经在上面做过,但我不建议在SELECT *
查询中使用JOIN
。联接表之间的公共列名称需要别名才能在PHP API中区分,从而引起混淆。始终最好明确显示SELECT
列表中实际需要的列。
有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
PHP Count数组元素 - php嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…
PHP-将日期插入日期时间字段 - php我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数