Я создаю своего рода форум, поэтому мне нужно отображать сообщения.Каждому сообщению назначены комментарии и теги, а каждому сообщению назначен пользователь;также каждый комментарий присваивается пользователю.Так что мне нужно получить: пост, его комментарии и имена пользователей их авторов, теги и пользователя, которому назначен пост.Отображаемое сообщение выглядит примерно так:
post_title (submit_time)
tag1, tag2, tag3
user_name
comment_text
user_name
comment_text
user_name
etc.
Проблема в том, что отношения между сообщениями, пользователями, комментариями и тегами различны.Сообщения для пользователей имеют отношение N: 1 (несколько сообщений для одного пользователя), сообщения для комментариев имеют отношение 1: N (несколько комментариев для одного сообщения), сообщения для тегов имеют отношение m: n (любое количество тегов для любого числа.сообщений).
Я разработал сложный запрос с большим количеством ЛЕВЫХ СОЕДИНЕНИЙ, который позволяет мне извлекать все данные для каждого объекта, но в нем много дублирующих строк (например, если есть 5 комментариев, данные оавтор поста будет извлечен 5 раз, с тегами становится еще хуже).Это не кажется очень рациональным.Кроме того, он по-прежнему заставляет меня делать еще один запрос для каждого комментария, чтобы найти имя пользователя его автора.
Я новичок в MySQL, поэтому я действительно не знаю, как решить эту проблему.
Вопрос в том, каков наилучший способ получения таких данных?Должен ли я сделать один большой запрос или множество мелких (получить комментарии и теги с различными запросами для каждого сообщения)?
Пожалуйста, прокомментируйте, если моя ситуация неясна: я сделаю все возможное, чтобы прояснить это.