2013-07-01 3 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는 여러 행에서 동일하며 다른 필드 (예 : 연도, 제조사, 모델)는 다를 수 있습니다. 내가 원하는 것은 데이터를 통합하는 것입니다. 즉 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 

이 전혀 가능 ... 현재이 같은거야? 그렇다면 어떻게해야할까요?

데이터베이스가 가져 오기 전에 QUERY를 사용하여 데이터를 조작하면 도움이됩니다. 아마도 이런

+1

당신의 쿼리에서'part id'로 그룹화 된'group_concat'을 할 수 있습니까? – 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이보고 할 모든 데이터를 캡처해야합니다. 여러 소스에서 빌드해야하는 경우 select 쿼리로 가져 오기 전에 수행 할 수 있습니다. 그룹 concat은 그룹과 일치하는 행이 여러 개인 경우에만 여러 필드를 연결합니다. 따라서 part_id가있는 행이 1 행이면 정상적으로 표시됩니다. – elzaer