2010-01-19 2 views
0

Я попробовал теперь почти все, что мог, чтобы решить следующую проблему. До сих пор без успеха. Но должно быть решение, потому что я не думаю, что это слишком сложно. Я думаю, что я просто проклятый новичок ;-) Мне нужно присоединиться к объединению или что-то еще :-) в MySQL решить следующую проблему ...Проблема с MySQL: объединение нескольких результатов/строк, вызванных n-м

CASE: Три таблицы "posts", "tagmap" и "tags "

в tagmap таблицы хранит все нм отношения в корочках сообщений и корочку теги
в тегах таблица хранится tAG_NAME с тегом ID
в сообщений стола хранит post_title и POST_ID

posts post_id post_title 
      1   Charlie Chaplin Painting 

tagmap id   post_id tag_id 
      100  1   12 
      101  1   13 
      102  1   14 

tags  tag_id  tag_name 
      12   Acryl 
      13   Chalk 
      14   Poster 

Что я пытаюсь добиться, чтобы получить результат, как follwing, где все связанные теги объединены в одну колонку. Либо через запятую или пробел:
post_id => 1, post_title => Чарли Чаплин ... tag_name => Акрил, Chalk, Poster

Но до сих пор единственное, что я мог бы получить результаты являются mukltiple как это:
post_id => 1, post_title => Чарли Чаплин ... tag_name => Акрил
post_id => 1, post_title => Чарли Чаплин ... tag_name => Chalk
post_id => 1, POST_TITLE => Charlie Chaplin ... tag_name => Плакат

Кто-нибудь знает, как это может быть ac hieved ... Любая помощь будет высоко оценен и ТНХ заранее всем, кто может помочь мне ти этого ;-)

ответ

2

Использование:

SELECT p.post_id, 
     p.post_title, 
     GROUP_CONCAT(t.tag_name ORDER BY t.tag_name SEPARATOR ', ') 
    FROM POSTS p 
    JOIN TAGMAP tm ON tm.post_id = p.post_id 
    JOIN TAGS t ON t.tag_id = tm.tag_id 
GROUP BY p.post_id, p.post_title 

Ссылка:

+0

Да, это кажется правильным, извините, я искал больше результата UNION X-) –

+0

СПАСИБО ВАМ ОЧЕНЬ ОЧЕНЬ ... Я не могу поверить, что я этого не нашел ... Я действительно искал часы ... закончил рекурсивные методы или что-то еще ... Надеюсь, это будет так просто. Просто нужно было добавить GROUP_CONCAT и работать как чары в секундах ... СПАСИБО !!!! – Bosh

+0

Я только немного изменил его на s.th, как GROUP_CONCAT ... AS теги Сделано легче читать .. СПАСИБО !!! – Bosh

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