Получить последние 3 комментария для списка сообщений - PullRequest
0 голосов
/ 12 сентября 2011

В настоящее время я выполняю один запрос, чтобы получить все сообщения для пользователя, затем в цикле для этого я запрашиваю последние 3 комментария для этого конкретного сообщения.Супер неэффективно;Я опрашиваю снова и снова для каждого поста.Я хотел бы объединить свои запросы так, чтобы я запрашивал только один раз для всех сообщений и только один раз для всех комментариев для этих конкретных сообщений.На данный момент у меня есть список через запятую, который я сделал для всех сообщений для этого пользователя (например, "1,5,18,9")

posts таблица:

  • posts .id
  • posts .userid

comments таблица:

  • comments .id
  • comments .relid (это постид)
  • comments .userid

В запросе должен использоваться $ posts_list, который у меня есть, это список записей через запятую.Или отбор всех сообщений для этого пользователя, но это кажется неэффективным, поскольку у меня уже есть список сообщений в строке.

Большое спасибо за любую помощь!

1 Ответ

2 голосов
/ 12 сентября 2011

Попробуйте этот запрос -

SELECT p.id, p.userid, c.id, c.userid
  FROM posts p
  JOIN (
    SELECT c1.*, COUNT(*) rank FROM comments c1
    LEFT JOIN comments c2
      ON c2.relid = c1.relid AND c2.id <= c1.id
    GROUP BY c1.relid, c1.id
    ) c
  ON p.id = c.relid
WHERE rank < 4

И добавьте необходимое условие, т. Е. - ГДЕ p.userid IN (1,5,18,9).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...