Объединение значений в MySQL, где несколько строк в одной таблице относятся к одной строке в другой таблице - PullRequest
0 голосов
/ 05 октября 2011

У меня есть две таблицы mysql, одна перечисляет названия статей, другая перечисляет авторов, связанных с каждой статьей, следующим образом:

   article_id     title
 =======================
        1         art1
        2         art2
        3         blob


  article_id      name      surname
 =====================================
       1           jack       smith
       1           jill       jones
       1           rob        edgar
       2           billy      bryce
       3           dick       bonsor
       3           jeff       kucick

Я пытаюсь создать запрос, который будет возвращать следующее:

 article_id     title                 author
 =========================================================
      1          art1     jack smith, jill jones, rob edgar 
      2          art2                billy bryce
      3          blob          dick bonsor, jeff kucick

Я смотрел на group_concat и concat_ws, но у меня не получилось попытаться вернуть приведенный выше результат. Если у кого-то из вас есть какие-либо мысли по этому поводу, я был бы очень признателен!

Большое спасибо.

1 Ответ

0 голосов
/ 05 октября 2011
select
  a.article_id,
  a.title,
  group_concat(concat(p.name, ' ', p.surname)) as author
from
  article a
  inner join author p on p.article_id = a.article_id
group by
  a.article_id, 
  a.title

или, если вы хотите использовать concat_ws:

select
  a.article_id,
  a.title,
  group_concat(concat_ws(' ', p.name, p.surname)) as author
from
  article a
  inner join author p on p.article_id = a.article_id
group by
  a.article_id, 
  a.title
...