PHP MySQL DISTINCT / GROUP BY

时间:2014-09-22 18:40:50

标签: php mysql

我有以下表格:


- 表'Category_sub' -

  • Subcategory_id
  • Subcategory_maincatid
  • Subcategory_name

- 表'Products_categories' -

  • Products_categories_product_id
  • Products_categories_category_id

- 表'产品' -

  • Products_id
  • Products_itemnumber
  • Products_subitemnumber

我想显示此类别中的类别名称和产品数量。

每个产品都有一个项目编号(不唯一)和一个子项目编号(唯一)。将使用子项目编号 对于同一产品的不同颜色/类型。

我有以下脚本:

<?php

$sql= $db->prepare("
    SELECT *,
    COUNT(DISTINCT Products_itemnumber) AS Products_total
    FROM
        Category_sub,
        Products_category,
        Products
    WHERE
        Subcategory_maincatid=:cat_id
        AND Subcategory_id=Products_categories_category_id
        AND Products_categories_product_id_id=Products_id
    GROUP BY Subcategory_name
");

$sql->bindValue(':cat_id', $_GET['cat_id'], PDO::PARAM_INT);
$sql->execute();
$sql_fetch= $sql->fetchAll(PDO::FETCH_ASSOC);

foreach($sql_fetch as $category) {
    echo $category['Subcategory_name'] ."(". $category['Products_total'] .")<br />";
}

?>

上述脚本无法正常运行。我有两个产品具有相同的itemnumber,脚本应该 把它算作一种产品。上面的脚本正在计算两种产品。

1 个答案:

答案 0 :(得分:0)

select Subcategory_name, COUNT(*)
from Category_sub 
      JOIN Products_categories ON Products_categories_category_id = Subcategory_id
      JOIN Products ON Products_id = Products_categories_product_id
group by Subcategory_name