Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка выборки по двум параметрам 
:(
    Опции темы
h8every1
Дата 30.7.2007, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.2.2007
Где: Кемерово

Репутация: нет
Всего: нет



есть выборка, которая выдаёт похожие новости - 

Код

SELECT id, title, date, alt_name, MATCH (title, keywords) AGAINST ('$body') AS relev
FROM " . PREFIX . "_post
WHERE MATCH (title, keywords) AGAINST ('$body')
AND id != ".$row['id']."
AND approve='1'
AND date < '".$thisdate."'
LIMIT 5


нужно, чтобы после того как были выбраны 5 самых подходящих, они были отсортированы по дате. просто сделать ORDER BY relev DESC, date DESC - не подходит, т.к. будет искать сперва с одинаковыми числом в поле relev, а это практически не возможно, и только если найдёт статьи с одинаковыми значениями, отсортирует их по дате.

на одном форуме мне посоветовали сортировать массив, который получается на выходе, т.к. поле date я тоже выбираю. но я не представляю как это сделать. подскажите, пожалуйста, ссылки в которых можно почитать как PHP работает с результатами БД?
PM ICQ   Вверх
Fally
Дата 30.7.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: нет
Всего: 4



Цитата

ORDER BY relev DESC, date DESC - не подходит

а что мешает написать вот так: ORDER BY date DESC, relev DESC ? Ведь тогда он сначала от сортирует по дате, а уже потом по полю relev

Это сообщение отредактировал(а) Fally - 30.7.2007, 09:50


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
h8every1
Дата 30.7.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.2.2007
Где: Кемерово

Репутация: нет
Всего: нет



Fally, в том-то и дело - надо выбрать не последние новости, а самые похожие. а они могли быть и месяц назад, и два.

А в вашем варианте получается, что сперва мы сортируем новости по дате - выбирутся самые последние новости, а потом, если дата у некоторых совпадает, эти новости сортируются по релевантности. А дата совпадать будет, потому что в день добавляется примерно 20-30 новостей.

не то. но спасибо за попытку =)
PM ICQ   Вверх
sTa1kEr
Дата 30.7.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



h8every1, сделайте через вложенный селект. Не самый практичный, но самый простой способ.
Код

SELECT * FROM
(SELECT id, title, date, alt_name, MATCH (title, keywords) AGAINST ('$body') AS relev
FROM " . PREFIX . "_post
WHERE MATCH (title, keywords) AGAINST ('$body')
AND id != ".$row['id']."
AND approve='1'
AND date < '".$thisdate."'
ORDER BY relev DESC
LIMIT 5) AS t
ODER BY t.date DESC


Это сообщение отредактировал(а) sTa1kEr - 30.7.2007, 11:54
PM MAIL   Вверх
h8every1
Дата 30.7.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.2.2007
Где: Кемерово

Репутация: нет
Всего: нет



Цитата(sTa1kEr @  30.7.2007,  16:53 Найти цитируемый пост)
h8every1, сделайте через вложенный селект.


хех. были у меня такие мысли. и даже сделал до этого. но, к сожалению, версия MySQL , которая на сервере стоит (5.0.26) не поддерживает LIMIT в подзапросе. не знаю, поддерживает ли вообще какая-нибудь =)

мне бы что-нибудь с результатом запроса наколдовать. или в php всё только по одной записи передается?
в идеале было бы просто весь массив выборки отсортировать по полю 'date' - оно же тоже выбирается... но как?

хотя не. я не так делал. попробую, спасибо =)

Это сообщение отредактировал(а) h8every1 - 30.7.2007, 13:13
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.