mysql: получить все строки в 1 столбец

  • пост (id_post, заголовок)
  • тег (id_tag, имя)
  • post_tag (id_post_tag, id_post, id_tag)

Предположим, что id_post 3 имеет 4 связанных тега 1,2,3,4 (футбол, корзина, теннис и гольф).

Есть ли способ вернуть что-то подобное в ОДНОЙ строке?

  • столбец 1 id_post = 3
  • Теги col 2 = футбольная корзина теннис гольф

Спасибо


person Andres SK    schedule 28.05.2010    source источник


Ответы (1)


Использовать:

  SELECT p.id_post
         GROUP_CONCAT(DISTINCT t.name SEPARATOR ' ')
    FROM POST p
    JOIN POST_TAG pt ON pt.id_post = p.id_post
    JOIN TAG t ON t.id_tag = pt.id_post_tag
GROUP BY p.id_post

Имейте в виду, что разделителем по умолчанию является запятая, поэтому вам нужно определить один пробел, если вы не хотите этого между именами тегов.

Документация:

person OMG Ponies    schedule 28.05.2010
comment
работал отлично! только еще одно сомнение ... как мне ограничить количество тегов, например: 3 - я пытался использовать подход LIMIT, но это не сработает. - person Andres SK; 28.05.2010
comment
@andufo: вы должны использовать переменную для обеспечения аналитических функций, потому что она изначально не существует в MySQL. - person OMG Ponies; 28.05.2010