Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сортировка по списку
 
 автор: btr   (30.01.2013 в 18:39)   письмо автору
 
 

Здравствуйте.
проводим выборку по списку
AND art.id IN (4569,4575)

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

  Ответить  
 
 автор: btr   (31.01.2013 в 00:42)   письмо автору
 
   для: btr   (30.01.2013 в 18:39)
 

Уважаемые телеглядачи :) помогите, не знаю, как решить данный вопрос, а НАДО

  Ответить  
 
 автор: .heed   (31.01.2013 в 13:23)
 
   для: btr   (31.01.2013 в 00:42)
 

Тут как-бы очевидно ответ выглядит таким
WHERE ... AND art.id IN (4569,4575) ORDER BY art.id

Или если именно в IN () должен задаваться порядок сортировки, то вряд-ли возможно, в ORDER BY кроме номера или имени поля может быть выражение, но оно тогда должно возвращать результат, по которому будет сортировка

  Ответить  
 
 автор: .heed   (31.01.2013 в 13:45)
 
   для: .heed   (31.01.2013 в 13:23)
 

если только извратиться и прилепить какое-нибудь FIND_IN_SET
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2

  Ответить  
 
 автор: btr   (31.01.2013 в 14:34)   письмо автору
 
   для: .heed   (31.01.2013 в 13:45)
 

почитаю, посмотрю

  Ответить  
 
 автор: btr   (31.01.2013 в 14:33)   письмо автору
 
   для: .heed   (31.01.2013 в 13:23)
 

в общем, наверное я как всегда неточно формулирую:
Ваш вариант сортирует по возрастанию art.id, а надо, чтоб как в списке (может быть: (23, 45, 3, 28 итд))

  Ответить  
 
 автор: Lotanaen   (31.01.2013 в 14:46)   письмо автору
 
   для: btr   (31.01.2013 в 14:33)
 

а по какому принципу у Вас (23, 45, 3, 28 итд) для запроса формируется? откуда такой порядок берется?

  Ответить  
 
 автор: btr   (31.01.2013 в 15:03)   письмо автору
 
   для: Lotanaen   (31.01.2013 в 14:46)
 

формируется на клиенте. это порядок просмотров товаров

  Ответить  
 
 автор: btr   (31.01.2013 в 14:37)   письмо автору
 
   для: btr   (31.01.2013 в 00:42)
 

может, как то через вложенный запрос? прочитал, что им можно пользоваться в order by, но примеров нет, и что-то в голову не приходит, с чего начать :)

  Ответить  
 
 автор: .heed   (31.01.2013 в 15:41)
 
   для: btr   (31.01.2013 в 14:37)
 

я примерно о таком говорил
SELECT * FROM `help_topic` WHERE help_topic_id IN (356,307,399) ORDER BY FIND_IN_SET(''+help_topic_id,'356,307,399')

незнаю насколько будет влиять на скорость

  Ответить  
 
 автор: btr   (31.01.2013 в 16:01)   письмо автору
 
   для: .heed   (31.01.2013 в 15:41)
 

AND art.id IN (4570,4571,4569,4575)
ORDER BY FIND_IN_SET(art.id,'4570,4571,4569,4575')


вот таким образом получилось, спасибо огромное :)

по поводу правильности подхода (по поводу скорости итп) хотелось бы мнения гур выслушать.

  Ответить  
 
 автор: Sfinks   (01.02.2013 в 09:26)   письмо автору
 
   для: btr   (31.01.2013 в 16:01)
 

Сортировка по списку выполняется всегда именно так. Так что по скорости вариантов не много =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования