1

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 が 2 つ以上の行で一致している場合、他のフィールド (年、メーカー、モデルなど) を 1 つの行に結合したいと考えています。

というか、今こんな感じ…

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 を受け入れます。

4

1 に答える 1

1

おそらくこのようなもの:

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 )

于 2013-07-01T23:31:41.440 に答える