PHP и MySQL - выберите оценку, не возвращая правильный порядок - PullRequest
0 голосов
/ 21 января 2012

У меня следующий запрос:

SELECT DISTINCT user.user_id 
FROM (post INNER JOIN user ON user.user_id = post.user_id) 
WHERE post.red_flag = 0 AND post.approved = 1 
AND user.official = 1 
AND post.activity_date >= '2012-01-13' 
ORDER BY post.activity_date DESC LIMIT 6

Я пытаюсь получить новейшие сообщения от официальных лиц, утвержденных, в течение последних 30 дней.

Кажется, проблема в том, что запрос находит первое отличное значение user_id и использует дату, прикрепленную к этой строке. Он просматривает таблицу в произвольном порядке, находит user_id 15 и отмечает его как уникальный. Затем каждая другая запись с user_id 15 передается. Запись, которую я хочу с самой новой датой, является той, которая пропущена.

Как мне получить его, чтобы он возвращал самые новые отдельные сообщения?

1 Ответ

1 голос
/ 21 января 2012

Вы не выбираете сообщения, вы выбираете user_id из таблицы user.

Не зная вашей структуры таблицы, я думаю, вам нужно что-то вроде:

SELECT post.id FROM post LEFT JOIN user
  ON user.user_id = post.user_id
WHERE post.red_flag = 0
  AND post.approved = 1
  AND user.official = 1
  AND post.activity_date >= '2012-01-13'
GROUP BY post.user_id
ORDER BY post.activity_date DESC
LIMIT 6

Я добавил предложение GROUP BY, так как кажется, что вы хотите вернуть только одно сообщение для пользователя.

...