2009-04-14 7 views
1

에 대한 CSV를 생산하는 방법 나는 다음과 같은 테이블이 있습니다오라클 인라인 관계

ALERT (ID,Name) 
    1 | Alert A 
    2 | Alert B 


ALERT_BRAND_XREF (ALERT_ID, BRAND_ID) 
    1 | 1 
    1 | 2 
    2 | 1 

BRAND (ID, NAME) 
    1 | Brand A 
    2 | Brand B 

내가 하나 개의 필드에 CSV 목록으로 해당 브랜드와 경고의 목록을 반환하는 하나의 명령문을 작성하는 것을 시도하고있다 . 원하는 결과 :

Alert A | Brand A, Brand B 
Alert B | Brand A 

별도의 기능을 작성하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 가능한 경우 자체 포함 된 SQL 문에서 수행하고 싶습니다.

이것은 Oracle 9i입니다.

답변

1
MySQL의에서

이이 GROUP_CONCAT() 기능 쉬운 것입니다,하지만 오라클에 해당 할 것처럼 조금 지저분한입니다 같습니다

여기 Oracle group_concat() updated (again)

0

쉼표로 반복 그룹을 설정하는 또 다른 방법 설정 목록. 오라클의 SQL dialect의 MODEL 절을 사용합니다. (오라클 10g)

http://plsqlnotes.blogspot.com/2007/09/using-model-for-generating-csv-by_2227.html#links

(내 이전 오답을 대체합니다).

+0

나는이 내장 된 CSV 발전기의 인식하지 않았다) (wm_concat를 사용할 수 있습니다. 다른 세부 사항? 링크? –

+0

죄송합니다. 내 실수입니다. 나는 당신의 문제를주의 깊게 읽지 않았다. 나는 당신이 CSV 파일에 모든 것을 던지려고한다고 생각했습니다. 죄송합니다! –

1

this solutions을 보면 매우 유용합니다. SYS_CONNECT_BY_PATH 및 분석 함수 사용.

0

오라클에서는

SELECT a.Name , wm_concat(b.Name) FROM 
    ALERT a, 
    ALERT_BRAND_XREF abx , 
    BRAND b 
    where a.id = abx.ALERT_ID 
    and abx.BRAND_ID = b.id 
    group by a.Name;