SQLITE3 2 уровня соединения с агрегацией на среднем уровне - PullRequest
0 голосов
/ 21 января 2010

у нас 3 стола: деды, отцы, сыновья. у дедушек много отцов, а у отцов много сыновей, через внешние ключи grandfather_id и Father_id. Каждая запись имеет только одно свойство - имя человека.

То, что я хочу, - это иметь список всех дедов, у каждого из которых есть поле с именем grandsons_names, которое является 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;

проблема в том ... появляется только один дедушка, потому что агрегация происходит не в том месте .. как это исправить?

спасибо

1 Ответ

1 голос
/ 21 января 2010

Вы пробовали это так?

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...