Возникли проблемы с запросом MySQL, извлекающим данные из нескольких таблиц ... логический вопрос - PullRequest
0 голосов
/ 28 марта 2011

Я постараюсь сделать это просто и точно. По сути, у меня есть лента новостей и раздел комментариев. Раздел комментариев имеет два уровня: ответы и затем ответы на ответы. В основном структурировано так для данного новостного поста:

 -> comment

 ---> reply

 ---> reply

Каждый комментарий может иметь несколько ответов. Очевидно, что НЕПРАВИЛЬНЫЙ способ сделать это - выполнить SQL-запрос для каждого комментария, чтобы проверить ответы и вывести их в список. РЕДАКТИРОВАТЬ Комментарии имеют только 1 уровень ответов, т.е. ответы НЕ МОГУТ содержать ответы. - Спасибо JohnP

Мои вопросы для этого вида запроса:

Должен ли я хранить комментарии и ответы в отдельных таблицах и использовать JOIN, или я могу хранить ответы и комментарии в одной таблице и использовать квалификатор для разделения типа?

Должен ли я попытаться отсортировать их с помощью запроса или вытащить все данные в массив и отсортировать и отобразить таким образом?

Моя таблица в настоящее время выглядит следующим образом:

ID (unique, auto increment)
NEWS_ID (ties the comment to a particular news post)
REPLY_ID (ties the comment to a parent comment if it is a reply to another comment)
USER_ID
BODY
PUBLISHED_DATE

Любые предложения от тех, кто мудрее меня, будут с благодарностью! Я все еще на очень ранних стадиях полного понимания JOINS и других структур запросов mysql более высокого уровня. (IE: я отстой в MySQL, но я учусь :)

1 Ответ

0 голосов
/ 28 марта 2011

Поскольку вы сказали, что ответы на один уровень глубиной ..

Я бы прокомментировал 1 таблицу и имел бы поле comment_id для обозначения владельца и поле news_id для добавления отношения к новостному элементу. Таким образом, вы можете просто запросить все комментарии, соответствующие news_id, и отсортировать их по comment_id. А потом немного волшебства PHP-массива даст вам отсортированный список комментариев / ответов.

Итак, посмотрев на вашу текущую таблицу, вы на правильном пути.

...