2012-09-12 1 views
1

Я пытался создать запрос, который будет искать таблицу1, а затем CONCAT все значения table2.column1, где table1.id = table2.ownerКак слить строки второй таблицы в 1 поле

People 
name | id 
------------- 
tim | 1 
jill | 2 
john | 3 


Dogs 
name | owner 
-------------- 
a | 1 
b | 1 
c | 2 
d | 2 

Используя следующую таблицу я нужен запрос, который будет выходной

name | dogs 
----------- 
tim | a, b 
jill | c, d 
john | NULL (or a blank text or just so long as the name john still shows) 

я провел несколько часов, и действительно не могу это сделать. Я думаю, что это какая-то форма затора между OUTER JOIN и group_concat(). Но я действительно не приблизился к моему ответу.

Благодарим за помощь!

+0

почему не 'внешний join' работал с вами? –

ответ

3

Вы хотите использовать GROUP_CONCAT и GROUP BY

SELECT p.name, GROUP_CONCAT(d.name) 
FROM people p 
LEFT JOIN dogs d 
    ON p.id = d.owner 
GROUP BY p.name 

см SQL Fiddle with Demo

+0

добавлена ​​ссылка для 'GROUP_CONCAT': D –

+0

Спасибо. К сожалению, у нас теперь есть тот же ответ, хотя ваш изначально был INNER JOIN – Taryn

+0

. Большое вам спасибо, моя проблема часами, решена за считанные минуты: P – kjones1876

2

Я думаю, вы ищете GROUP_CONCAT в MySQL.

SELECT a.name, GROUP_CONCAT(b.name) dogsName 
FROM People a 
     LEFT JOIN Dogs b 
      ON a.id = b.owner 
GROUP BY a.name 

SQLFiddle Demo

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