Мои знания SQL действительно немного ржавые, но у меня есть несколько простой вопрос для экспертов. У меня есть три таблицы:Самый эффективный способ конкат-строк
сообщения - POST_ID - имя - описание
posts_categories - post_id - слизняк
posts_themes - post_id - слизняк
В основном я хотел бы для запроса списка сообщений, например:
SELECT post_id, name, description, themes, categories FROM posts LIMIT 0, 50
Я хотел бы объединить соответствующие категории таблиц темы и объединить их в один столбец. Таким образом мой выход будет:
1 | тестирование | описание | музыка, искусство, история | важный, актуальный, новый
Я попытался использовать это как подзапрос, но попал в общую проблему, когда было возвращено несколько строк. Я также попытался ПОЛНОСТЬЮ ПРИСОЕДИНИТЬ результаты, но я не могу получить правильные результаты. Из-за боязни подслушивать мои результаты, не осознавая этого, я надеялся, что кто-то может помочь сформулировать наиболее эффективный и правильный запрос.
Спасибо.
Мне нравится ваше решение больше, чем Олли Джоун, однако я не знаю, почему это необходимо для группировки по имени и описанию. Также я получаю дублирующие результаты в своем наборе данных. Как я могу гарантировать, что они уникальны? Я считаю, что бросать DISTINCT() до того, как GROUP_CONCAT будет работать. – ddibiase
@ddibiase В MySQL вы можете группировать только по id в том случае, если идентификатор достаточно уникален, однако другие RDBMS (postgresql/sql server/oracle/...) или даже некоторые режимы MySQL могут быть установлены на более строгие и требуют от вас для группировки по всем одиночным значениям. Я не уверен, какие дубликаты вы получаете, не могли бы вы добавить пример? –
Ничего, он закончил работать. Благодаря! – ddibiase