Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Приоритет в сортировке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dzheka3d
Отправлено: 14 Сентября, 2014 - 14:01:32
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Доброго времени суток всем!
Есть у меня запрос, который кое как ищет похожие новости к статье, вот он:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. "SELECT `id`,`category_id`,( IF (`title` LIKE '%установка%', 60, 0)+ IF (`text` LIKE '%установка%', 10, 0)) AS `relevant`
  3. FROM `pictures`
  4. WHERE ( `imagename` LIKE '%установка%' OR `text` LIKE '%установка%'
  5. ORDER BY `relevant`"
  6.  


Все прекрасно работает, но есть один вопрос: как сделать, чтобы при сортировке, приоритет выборки был не только у тех статей, у которых больше релевантность но и у тех, у которых category_id равен 12

Например у меня полся вот такой вывод по вышеописанному запросу
----id----category_id---relevant ---
======================
--- 25--------10------------100-----
--- 36--------8--------------97-----
--- 17--------12-------------90-----
--- 15--------12-------------85-----
--- 29--------11-------------76-----

Но нужно, чтобы сортировка была следующей:
----id----category_id---relevant ---
======================
--- 17--------12-------------90-----
--- 15--------12-------------85-----
--- 25--------10------------100-----
--- 36--------8--------------97-----
--- 29--------11-------------76-----

т.е. Первым делом выводим релевантные статьи из категории 12, а уже после этого остальные
 
 Top
tuareg
Отправлено: 14 Сентября, 2014 - 17:25:45
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Как-то так
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT `id`,`category_id`,( IF (`title` LIKE '%установка%', 60, 0)+ IF (`text` LIKE '%установка%', 10, 0)) AS `relevant`
  3. FROM `pictures`
  4. WHERE ( `imagename` LIKE '%установка%' OR `text` LIKE '%установка%'
  5. ORDER BY `category_id`=12,`relevant`
  6.  

Если не поможет, извращаться дальше с if в ORDER by
 
 Top
Sail
Отправлено: 15 Сентября, 2014 - 08:57:03
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. ORDER BY FIELD(`category_id`, 12) DESC,`relevant` DESC

Так вот точнее будет Улыбка

(Отредактировано автором: 15 Сентября, 2014 - 09:11:55)

 
 Top
dzheka3d
Отправлено: 16 Сентября, 2014 - 00:27:11
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Точно, работает, спасибо ;)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB