2012-08-14 2 views
0

GROUP_CONCAT에 문제가있어서 결과를 csv로 내보내고 있습니다.GROUP_CONCAT에 문제가있어서 csv에 출력

다음 표를 고려하십시오.
검색 결과
with columns 검색 ID | 설명 | 투표 | 검색 카테고리

and consider the following data in the table 
1|java, beans|2|java 
2|serialization|3| java 
3|jquery| 1|javascript 
4|mysql joins|5| database 

나는

Search Category| description1 | description 2 | votes 1 | votes 2 
java   |java,beans | serialization | 2  | 3 
javascript  |jquery   |    | 1 
database  | mysqljoins |    | 5 

내가 CSV 파일로 출력이 데이터를 필요로하는 다음과 같은 형식의 출력이 필요합니다.

나는 다음과 같은 쿼리를 카테고리를 선택, GROUP_CONCAT OUTFILE에 search_category에 의해 search_results 그룹에서 (설명), GROUP_CONCAT (표)를 작성한 라인 ' "'로 둘러싸인 ','종료 '/tmp/out.csv'필드 '\ n'로 끝나는

다음은 문제입니다. - 위의 쿼리는 각각 설명과 쉼표로 구분 된 값을 표시하는 한 개의 열을 반환합니다. 각 값에 대해 별도의 열이 필요합니다 원하는 출력) - 카테고리 javascript의 경우 출력은 다음 형식으로 반환됩니다.

javascript|jquery|5<br/> 

형식으로 출력해야합니다. javascript | jquery | | 5 | |

이 존재하는 경우 당신에게 두 번째 열을 줄 것 자체에 테이블을 연결하는 빈 값

답변

0
SELECT 
    s1.search_category 
    , s1.description AS description1 
    , ISNULL(s2.description, '') AS description2 
    , s1.votes AS votes1 
    , ISNULL(s2.votes, '') AS votes2 
FROM search_results AS s1 
LEFT OUTER JOIN search_results AS s2 ON s2.search_category = s1.search_category 
WHERE s1.search_id < s2.search_id 
INTO OUTFILE ... 

LEFT위한 자리가 있어야합니다. 값이 없으면 값은 NULL이되고 ISNULL은 공백을 반환합니다.

search_category가 동일한 행이 2 개 이상인 경우 출력에 행이 하나 이상있을 수 있습니다.

+0

범주에 대한 결과 수가 동적이기 때문에 솔루션이 작동하지 않습니다. 따라서 설명 및 표제를 표시하는 열의 수가 동적입니다. – coder

+0

결과에 다양한 열 수 (냄새 나는 정도)가 있거나 모든 열을 최대 열 수로 채우고 싶습니까? – Andrew