[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Лимит и сортировка определенных столбцов
TranceIT
Имею такой запрос в БД

$query = "SELECT gtv_posts.post_name, gtv_posts.post_creation_date,
gtv_posts.post_text, gtv_posts.post_rating, gtv_posts.post_img,
gtv_categories.category_name, gtv_categories.category_id,
gtv_users.user_login, gtv_posts.post_id
FROM gtv_posts, gtv_categories, gtv_users
WHERE gtv_categories.category_id = gtv_posts.post_parent
AND gtv_posts.post_rating > 50
AND gtv_users.user_id = gtv_posts.post_creator_id
ORDER BY gtv_posts.post_rating DESC
LIMIT "
. $limits['start'] . ", " . $limits['end'];


Задача: выбрать записи с рейтингом выше 50 отсортированные в порядке убывания. Лимит устанавливается в зависимости от текущей страницы.

Мне нужен следующий порядок действий:
1) Выбрать посты с рейтингом больше 50.
2) Отсортировать в порядке убывания.
3) Выбрать лимитом записи.

На практике я получаю:
1) Выбрать посты с рейтингом больше 50.
2) Выбрать лимитом записи.
3) Отсортировать в порядке убывания.
Из-за этого при лимитах 15, 30 я получаю пару тройку значений которыми заканчиваются лимиты 0, 15

Подскажите решение проблемы.



Спустя 24 минуты, 25 секунд (27.11.2011 - 18:53) Placido написал(а):
У вас и так сначала идет сортировка, а потом отбор лимитом. Проблема у вас, думаю, в другом - зачем и как вы выбираете gtv_users.user_login из таблицы gtv_users. Попробуйте вообще убрать gtv_users.user_login из SELECT, а gtv_users из FROM, и посмотрите, что получится.

Спустя 5 минут, 55 секунд (27.11.2011 - 18:59) TranceIT написал(а):
Пропустил

AND gtv_users.user_id = gtv_posts.post_creator_id

Проблемы это не решает, при отсутствии этого условия выбирается значение из первой строки.

Первый пост исправил.

Спустя 16 минут, 44 секунды (27.11.2011 - 19:15) Placido написал(а):
Хочу уточнить на всякий случай. $limits['end'] - это количество выбираемых записей? Просто настораживает "end".

Спустя 3 минуты, 2 секунды (27.11.2011 - 19:18) TranceIT написал(а):
Немного проявилась ситуация. Повторение значений происходит только в том случае, если лимит выпадает на посты с одинаковым post_rating.

Спустя 1 минута, 42 секунды (27.11.2011 - 19:20) TranceIT написал(а):
Цитата (Placido @ 27.11.2011 - 16:15)
Хочу уточнить на всякий случай. $limits['end'] - это количество выбираемых записей? Просто настораживает "end".

Да, она всегда на 15 больше чем start

Спустя 3 минуты, 42 секунды (27.11.2011 - 19:24) Placido написал(а):
"На 15"? Она должна быть всегда равна 15, это не номер последней выбираемой записи, а количество выбираемых записей.

Спустя 6 минут, 10 секунд (27.11.2011 - 19:30) TranceIT написал(а):
Цитата (Placido @ 27.11.2011 - 16:24)
"На 15"? Она должна быть всегда равна 15, это не номер последней выбираемой записи, а количество выбираемых записей.

Елки палки! Это мой фэйл недели =))))
Спасибо =)))


_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.