2012-12-19 2 views
3

단일 행을 참조하는 행 집합을 포함하는 다른 테이블 (테이블 M)이 연결된 필드가있는 테이블 (테이블 D)이 있습니다. 테이블 D.일대 다 테이블 관계에 대한 조인 쿼리 만들기

수 (만일 그렇다면, 어떻게) 나는 단지 D에서 필드를 선택하지만, 테이블 M와 결합, 하나의 결과 열에서 (하나의 열에서) 모든 행의 값을 반환하지 않는 것이다 SQL 쿼리를 만들 수 있습니다 , 모두 함께 연결됩니다 (가급적이면 어떤 종류의 이스케이프 처리로 인해 M의 가짜 데이터로 오염 될 수 없습니까?)?

편집 : Where DataName = 'Bar'이 쿼리

+-----------+----------+-------------+ 
| DataRowID | DataName | RandomField | 
+-----------+----------+-------------+ 
| 1   | Foo  | Alice  | 
+-----------+----------+-------------+ 
| 2   | Bar  | Bob   | 
+-----------+----------+-------------+ 
| 3   | Baz  | Charlie  | 
+-----------+----------+-------------+ 


+-----------+-----------+-----------+ 
| MetaRowID | DataRowID | MetaValue | 
+-----------+-----------+-----------+ 
| 1   | 1   | Mercury | 
+-----------+-----------+-----------+ 
| 2   | 1   | Venus  | 
+-----------+-----------+-----------+ 
| 3   | 1   | Earth  | 
+-----------+-----------+-----------+ 
| 4   | 2   | Mars  | 
+-----------+-----------+-----------+ 
| 5   | 2   | Jupiter | 
+-----------+-----------+-----------+ 
| 6   | 3   | Saturn | 
+-----------+-----------+-----------+ 
| 7   | 3   | Uranus | 
+-----------+-----------+-----------+ 
| 8   | 3   | Neptune | 
+-----------+-----------+-----------+ 
| 9   | 3   | Pluto  | 
+-----------+-----------+-----------+ 

,

+-----------+----------+-------------+--------------+ 
| DataRowID | DataName | RandomField | MetaData  | 
+-----------+----------+-------------+--------------+ 
| 2   | Bar  | Bob   | Mars,Jupiter | 
+-----------+----------+-------------+--------------+ 
+0

가능한 중복 http://stackoverflow.com/questions/5031204/does-t-sql-have-an-aggregate-function-to-concatenate-strings –

+1

Wh 릭 RBDMS? 나는 당신의 과거 질문에서 MySQL을 추측하고있다 ... –

+0

어떤 예제 데이터와 출력은 도움이 될 것인가? – StevieG

답변

2

를 사용하여 MySQL의의 GROUP_CONCAT 기능 :

SELECT d.ID, GROUP_CONCAT(m.Field) AS ConcatFields 
FROM d JOIN m ON d.ID = m.dID 
GROUP BY d.ID 
+0

GROUP_CONCAT에 대해 어떻게 값을 함께 붙입니까? 또한, 단지','를 사용한다고 가정 해 보겠습니다. 필드 값에','가 있으면 이스케이프됩니까? – topherg

+1

@cgoddard 기본 분리 기호는','이지만 분리자를 함수에 전달할 수도 있습니다. 필드의 기존 데이터를 변경하지 않으므로 필드의 기존','을 모두 REPLACE해야합니다. –

+0

감사. http://stackoverflow.com/questions/452357/mysql-group-concat-escaping 같은 것을 구현 한 것으로 보았습니다. 그렇습니까? – topherg

관련 문제