2014-09-14 2 views
-1

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

У меня есть эти столбцы в моей базе данных:

  • ид - это уникальный идентификатор
  • сообщения дана - это идентификатор сообщений от API третьей стороны
  • PageId - Это идентификатор страницы, на которой сообщение должно отображаться на
  • дата

Как я вернуть все мои посты это с этим запросом:

SELECT * FROM wp_tintup WHERE pageID='".$pageID."' ORDER BY sponsored DESC, date DESC 

Я попробовал этот запрос:

SELECT * FROM wp_tintup WHERE id < '$postID' AND pageID='$pageID' ORDER BY sponsored DESC, date DESC LIMIT 1 

Это, кажется, всегда возвращает первую строку в базе данных , или может быть, что он возвращает «спонсируемый» пост, даже если это не «предыдущая» строка.

Проблема в том, что id не должно быть тем, что определяет порядок. Я думаю, что должно случиться, что SQL необходимо изменить порядок сообщений и дать ему временный идентификатор, чтобы ссылаться на него или что-то в этом роде. Я не уверен.

Любая помощь будет замечательной! Благодаря

+2

пожалуйста, прочитайте [MY POST] (http://meta.stackoverflow.com/a/271056/2733506) о том, как задать хороший вопрос , Есть советы и рекомендации для печати таблиц, форматирования и того, как правильно объяснять ... Нам нужно увидеть данные, схему таблицы, sqlfiddle будет лучше –

ответ

1

Это ваш запрос:

SELECT * 
FROM wp_tintup 
WHERE id < '$postID' AND pageID='$pageID' 
ORDER BY sponsored DESC, date DESC 
LIMIT 1; 

Он возвращается спонсируемые сообщения первым, потому что вы рассказываете его. Это то, что делает order by sponsored в этом контексте. Может быть, вы можете получить то, что вы хотите, удаляя что из order by:

SELECT * 
FROM wp_tintup 
WHERE id < '$postID' AND pageID='$pageID' 
ORDER BY date DESC 
LIMIT 1; 
+0

Это по-прежнему возвращает первое сообщение в списке по какой-то причине , –

Смежные вопросы