2010-01-21 3 views
0

조부모, 아버지, 아들 등 3 개의 테이블이 있습니다. 할아버지에게는 많은 아버지가 있고, 아버지에게는 foref keys grandfather_id와 father_id를 통해 많은 아들이 있습니다. 각 레코드에는 하나의 속성, 즉 사람의 이름 만 있습니다.SQLITE3 중간 수준의 병합으로 2 단계 조인

내가 원하는 것은 모든 할아버지의 명단을 갖고 있고, 각각 grandsons_names라는 필드가 있습니다. 이것은 grandsons 이름의 csv입니다. 아버지의 이름은 어디에도 나타나지 않습니다.

여기에 문제 해결 내 시도이다 :

SELECT grandfathers.*, group_concat(sons.name) 
FROM grandfathers 
    LEFT JOIN fathers ON grandfathers.id == fathers.grandfather_id 
    LEFT JOIN sons ON fathers.id == sons.father_id; 

문제가 .. 하나의 할아버지는 집계가 잘못된 장소에서 어떤 일이 일어나고 있기 때문에 나타는 .. 방법이 문제를 해결하려면?

감사합니다.

+2

해당 코드 샘플에 GROUP BY 절이 누락되어 있지 않습니까? –

+0

왜이 질문에 당신 (누군가)이 투표 했습니까? 내가 생각하고 적절하게 표현한 것은 잘 알려져있다. 이것이 너무 쉽다고 생각한다면 그것은 당신의 문제입니다. 나는 그 해답을 알지 못했고 그것은 나에게 매우 도움이되었습니다. – luca

답변

1

이렇게 해 보셨습니까?

SELECT grandfathers.*, group_concat(sons.name) 
FROM grandfathers 
LEFT JOIN fathers ON grandfathers.id = fathers.grandfather_id 
LEFT JOIN sons ON fathers.id = sons.father_id 
GROUP BY grandfathers.id; 
관련 문제