php - MySQL:为每个分组仅打印一次数据

标签 php sql mysql

我正在使用 PHP/MySQL 进行编码,并使用以下查询来获取产品和产品组数据:

SELECT products.id,products.name,product_groups.id,product_groups.name
FROM products
INNER JOIN product_groups
ON products.id=product_groups.id
WHERE products.name LIKE '%foobar%'
ORDER by product_groups.id ASC

因此,此查询会获取产品并按产品组对它们进行排序。我想要的是为每个产品分组仅显示一次product_groups.name。所以即使我有十个鞋子产品,组名“鞋子”也只显示一次。

我使用以下 PHP 来打印结果:

while ($data = mysql_fetch_array($result))

最佳答案

如果你想在 MySQL 查询中完成它,老实说,这比它的值(value)更麻烦。首先,在每个分组的顶部列出组名的语法确实很奇怪(我记得)。结果仍然被视为行,因此组名称将被视为一行,所有其他列均为 Null,因此您不会在 PHP 脚本中真正节省任何时间或精力,因为它必须执行 if 语句捕获何时命中组名称而不是组数据。

如果您希望通过 PHP while 循环来完成它,Johan 是正确的选择。对于类似的情况,我使用以下方法:

$result = $sql->query($query);

$prev_group = "";

while($data = $result->fetch_assoc()){
   $curr_group = $data['group'];
   if ($curr_group !== $prev_group) {
      echo "<h1>$curr_group</h1>";
      $prev_group = $curr_group;
    }
    else {
        echo $data;
        .....
     }

显然,回显数据将被设置为按照您想要的方式回显部分数据。但是 $prev_group/$curr_group 的设置是这样,它们唯一不匹配的情况是当您位于新组中并因此想要打印某种类型的标题时。

关于php - MySQL:为每个分组仅打印一次数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1170732/

相关文章:

php - make函数创建自动输入框

mysql - SQL SELECT --> csv 文件

带有超大 IN 子句的 SQL Server 查询会导致事件监视器中出现大量查询

mysql - 从当前 id mysql 中选择最大 id

php - 在 php 中调整大小后显示图像出错

PHP 包管理器

php - WordPress 媒体库钩子(Hook)和过滤器在 2 个函数之间传递变量

php - 一般错误 : 1215 Cannot add foreign key constraint

mysql - 请问如何通过sql查找季度stemp差异?

mysql - Xampp - MySQL 无法创建/写入文件(错误代码 : 2)