2015-02-15 3 views
1

У меня есть три таблицы "имена", "группа", "задача"запроса MySQL с использованием соединения и GROUP_CONCAT

"имена"

| nid | name | 
| 1 | John | 
| 2 | Jim | 
| 3 | Jerry | 

"группа"

| gid | nid | 
| 1 | 1 | 
| 1 | 2 | 
| 2 | 2 | 
| 2 | 3 | 

«задачи "

| tid | gid | 
| 1 | 2 | 
| 2 | 1 | 

Я хочу получить список имен, которые принадлежат к задаче, как это:

| tid | names  | 
| 1 | Jim,Jerry | 
| 2 | John,Jim | 

Я успешно попробовал:

SELECT t.tid,n.name 
FROM tasks t 
    LEFT JOIN groups g ON g.gid=t.gid 
    LEFT JOIN names n ON n.nid=g.nid 

Это работает до сих пор, но имена в отдельных выходов, так что я пытался использовать GROUP_CONCAT(), но это не работает , Я просто получаю первую задачу с неправильными именами!?!?

SELECT t.tid,GROUP_CONCAT(n.name) 
FROM tasks t 
    LEFT JOIN groups g ON g.gid=t.gid 
    LEFT JOIN names n ON n.nid=g.nid 

Я раньше не использовал GROUP_CONCAT(). Он работает хорошо, если использовать его в одном SELECT без соединений. Короче говоря, что я сделал не так, было бы хорошо.

+1

Добавить 'group by t.tid' в конце. –

+0

Но whhhyyyyyy? :-( – Strawberry

ответ

2

При использовании команды group_concat необходимо добавить результаты поиска.

Добавить group by t.id в конце вашего запроса.

Смежные вопросы