2013-07-01 17 views
1

我從SQL數據庫取結果,並使用下面的代碼將其輸出到CSV ...取回陣列 - 結合的一些結果在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將在幾行中相同,其他字段(如year,make,model)會有所不同。我希望做的是鞏固數據。換句話說,在part_id在兩行或多行中一致的情況下,我想將一些其他字段(例如year,make,model)組合成一行。

換句話說,它目前是這樣的...

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 

這是在所有可能的?如果是這樣,我該如何去做呢?

我打開一個查詢來操縱數據庫中的數據很牽強之前是否有幫助!

+1

你能不能做一個'group_concat'在查詢中'部分id'分組? – vee

回答

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

+0

謝謝!在一個示例中,以下內容用於查詢... SELECT id,GROUP_CONCAT(client_id)FROM services WHERE id = 3 GROUP BY id; 如果ID是動態的,該怎麼辦?它可以只分組任何重複? –

+0

這就是創建tmp_table部件的地方。您需要確保tmp_table捕獲所有要報告的數據。如果您需要從多個來源構建它,則可以在獲取選擇查詢之前執行此操作。如果有多行匹配您的分組,則該組concat只會並置多個字段。所以如果你只有一行part_id,它會顯示爲正常 – elzaer