php - 获取数组 - 在 CSV 中合并一些结果

标签 php mysql sql csv

我正在从 SQL 数据库获取结果并使用以下代码将其输出到 CSV...

while ($row = $results->fetch_assoc()) {
    fputcsv($handle, array(
        'admin',
        'base',
        'Default',
        'simple',
        '2', 
        $row['part_id'],
        $row['part_id'],
        $row['price'],
        $row['list_price'],
        $row['core'],
        $row['weight'],
        $row['height'],
        $row['length'],
        $row['width'],
        $row['popularity'],
        $row['qty'],
        $row['description_line_two'],
        $row['detailed_description'],
        $row['note'],
        $row['YearID'],
        $row['MakeID'],
        $row['ModelID'],
        $row['aspiration'],
        $row['bed_length'],
        $row['bed_type'],
        $row['body_num_doors'],
        $row['body_type'],
        $row['brake_abs'],
        $row['brake_system'],
        $row['cylinder_head_type'],
        $row['drive_type'],
        $row['engine_base'],
        $row['engine_designation'],
        $row['engine_version'],
        $row['engine_vin'],
        $row['fuel_delivery_type'],
        $row['fuel_delivery_subtype'],
        $row['fuel_system_design'],
        $row['fuel_type'],
        $row['mfr_body_code'],
        $row['region'],
        $row['steering_system'],
        $row['steering_type'],
        $row['submodel'],
        $row['transmission_control_type'],
        $row['transmission_num_speeds'],
        $row['transmission_type'],
        $row['valves_per_engine'],
        $row['wheel_base']
    ));
}

在数据中,有几个实例,其中零件 ID 在几行中相同,而其他字段(如年份、品牌、型号)不同。我希望做的是整合数据。换句话说,如果两行或多行的 part_id 一致,我想将其他一些字段(例如年份、品牌、型号)合并到一行中。

也就是说,目前是这样的……

Part ID    Year    Make    Model
0001       2013    Suzuki  NA
0001       2012    Acura   NA
0001       2011    Hyundai Elantra

我希望它像...

Part ID    Year              Make                      Model
0001       2013,2012,2011    Suzuki, Acura, Hyundai    NA, Elantra

这有可能吗?如果是这样,我将如何着手去做?

如果有帮助的话,我愿意接受 QUERY 操作数据库中的数据,然后再获取它!

最佳答案

也许是这样的:

CREATE TEMPORARY TABLE tmp_table
SELECT 'admin' as custom1,'base' as custom2,part_id,year... etc
FROM original_table
WHERE 1;

然后你会想从那里选择你的东西,并将分组放在:

SELECT part_id, custom1, GROUP_CONCAT(year) as year
FROM tmp_table
WHERE 1
GROUP BY part_id

不确定结构或分组,但使用谷歌搜索和引用搜索应该可以填补空白。概念在那里,你要找的是MySQL的GROUP_CONCAT特性(http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html)

关于php - 获取数组 - 在 CSV 中合并一些结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17415232/

相关文章:

php - 如何在插入时将多个列值连接到一列中

mysql - Highcharts - 不从表中返回空行

java - 为什么 rs.Next() 跳过列

sql - SAS 中合并的工作(使用 IN=)

php - 使用 AJAX Post 的响应

php - PHP 中的 preg_replace - NOT 条件的正则表达式

php - 计算表格的行数

选择中的mysql变量

mysql - 使用 SQL 选择年龄组

SQL order_by 表达式