【问题标题】:Need mysql data with grouped values based on column values in php需要基于php中的列值分组值的mysql数据
【发布时间】:2018-12-27 12:48:40
【问题描述】:

我有如下表架构

name   type  total
name1  type1  10
name1  type1  10
name1  type2  20
name1  type3  30
name2  type1  30
name2  type2  40
name2  type3  50
name2  type4  25

我需要输出为

name  type1 type2 type3 type4
name1 20    20     30    0
name2 30    40     50    25

我如何使用 php 和 mysql 来实现这一点。谁能帮我解决这个问题

注意:这里的 type1,type2.. 是动态名称,不能 硬编码

【问题讨论】:

  • 是什么阻止了你?你的代码在哪里?您的查询在哪里?您面临哪些错误?

标签: php mysql laravel-5


【解决方案1】:

试试:

select name, if(type='type1', sum(type),0) as type1, 
if(type='type2', sum(type),0) as type2 .................... from table_name group by name 

【讨论】:

  • 它说“截断不正确的双精度值”。而且我还更新了我的问题作为最后一个注释,我错过了提及
【解决方案2】:

你可以试试下面 -

SET @sql = NULL;
        SELECT
          GROUP_CONCAT(DISTINCT
            CONCAT(
              'MAX(IF(type = ''',
              type,
              ''', total, NULL)) AS ',
              type
            )
          ) INTO @sql
        FROM order_products_sizes;

        SET @sql = CONCAT('SELECT name, ', @sql, ' 
                           FROM tablename group by name');

        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2012-11-30
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2013-03-26
    • 2011-12-04
    • 2016-12-07
    相关资源
    最近更新 更多