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

Форум MySQL

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

 

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

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

тема: Запрос с сортировкой
 
 автор: LO   (14.03.2006 в 17:46)   письмо автору
 
 

У меня запрос примерно следующего содержания:

select a.*, b.id
from table1 as a, table2 as b
where (a.id=5 or a.id=2 or a.id=9 or a.id=6 )
and a.comp_id = b.id

После его выполнения выдаются поля с сортьровкой по a.id, т.е. сначала идет поле с id = 2, затем 5,6,9
А мне нужно что результат выдаватся в той последовательности как я указала в запросе id.
Как можно добится такой сортировки?

   
 
 автор: Artemy   (14.03.2006 в 17:57)   письмо автору
 
   для: LO   (14.03.2006 в 17:46)
 

Если MySQL старше 3 версии, то можно воспользоваться оператором UNION.
mysql-> select a.*, b.id from table1 as a, table2 as b where a.id=5  and a.comp_id = b.id UNION select a.*, b.id from table1 as a, table2 as b where a.id=2  and a.comp_id = b.id UNION select a.*, b.id from table1 as a, table2 as b where a.id=9  and a.comp_id = b.id UNION select a.*, b.id from table1 as a, table2 as b where a.id=6  and a.comp_id = b.id 

Похожая тема:
http://softtime.ru/forum/read.php?id_forum=3&id_theme=13907&page=1

   
 
 автор: Trianon   (14.03.2006 в 18:34)   письмо автору
 
   для: LO   (14.03.2006 в 17:46)
 


SELECT a.*, b.id 
FROM table1 AS a, table2 AS b
WHERE a.id IN (5,2,9,6) AND a.comp_id = b.id
ORDER BY locate(concat(',',a.id,','),  ',5,2,9,6,')  

   
 
 автор: Loki   (14.03.2006 в 21:48)   письмо автору
 
   для: Trianon   (14.03.2006 в 18:34)
 

Браво!
3 минуты только соображал как это работает, а потом, в сомнениях, полез читать в мануале про принципы сортировки в mysql. Похоже что действительно работает:))

   
 
 автор: Trianon   (14.03.2006 в 22:04)   письмо автору
 
   для: Loki   (14.03.2006 в 21:48)
 

Это просто я вчера MySQLьного мануала немного больше прочитал, чем смог усвоить. :)
Я искал какую-нибудь функцию наподобие sprintf(), а на глаза всё время лезла эта LOCATE() :-(
Надо же было от нее как-то избавиться. Не надо самому - отдай соседу.

   
Rambler's Top100
вверх

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