POST_COMMENTS в одном запросе MySQL - PullRequest
1 голос
/ 16 марта 2011

Я застрял в очень раздражающей проблеме.У меня есть простой раздел «Сообщения» и «Комментарии» на моем веб-сайте, как и в блоге, т.е. две таблицы «сообщения» и «комментарии»:

сообщения -> idpost, заголовок, текст, комментарий к дате -> idcomment, idpost_cmt, электронная почта, сообщение, idcomment_cmt

Очень просто.idpost_cmt -> Внешний ключ к таблице сообщений

Последнее поле в таблице комментариев, т. е. «idcomment_cmt» будет использоваться, если кто-то отправит комментарий к уже существующему комментарию:

Сообщение

| _ Комментарий 1

| _ Комментарий 2

| _ Комментарий 3

| _ Комментарий 4

_ _ |_ Комментарий 4.1

_ _ | _ Комментарий 4.2

| _ Комментарий 5.,,и так далее ...

Теперь то, что я точно хочу, это запросить все сообщения и комментарии в одном запросе MySQL.Что я делаю сейчас, так это то, что сначала я получаю все сообщения, а затем перебираю все сообщения.В каждом цикле я запрашиваю комментарии, используя текущий идентификатор сообщения.А затем циклически перебирайте комментарии и в каждом цикле комментариев запрашивайте подкомментарии с использованием текущего идентификатора CommentID.

Как вы можете видеть, таким образом, для одного запроса страницы может потребоваться 500 или более запросов sql, что слишком много для базы данных.сервер.Если бы кто-нибудь мог помочь мне, как сделать это, я был бы очень признателен.

Большое спасибо ...

1 Ответ

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

Вы должны выполнить два запроса.

  1. чтобы получить все сообщения
  2. чтобы получить все комментарии для всех постов, включая подкомментарии

Вы можете добавить комментарии к группам, используя idpost_cmt

что-то вроде:

SELECT idpost, 
       title, 
       TEXT, 
       DATE 
FROM   posts 
ORDER  BY DATE DESC 
LIMIT  30 

2-й запрос может быть что-то вроде:

SELECT idcomment, 
       idpost_cmt, 
       email, 
       message, 
       idcomment_cmt 
FROM   comments 
       JOIN posts 
         ON posts.idpost = comments.idpost_cmt 
WHERE  posts.idpost IN ( 1, 2, 3, 4 ) 
ORDER  BY idpost_cmt, 
          idcomment_cmt, 
          idcomment DESC 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...