Автор Тема: Простой SELECT по порядку  (Прочитано 4818 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kiruxa

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 209
  • +0/-0
  • 0
    • Просмотр профиля
    • http://autoxloo.com
Простой SELECT по порядку
« : 18 Марта 2008, 12:18:36 »
Добрый день

возникла такая проблемка

есть группа ID по которым надо сделать выборку

например - 11, 33, 22, 55, 44


Я делаю запрос

SELECT FROM tbl WHERE id in (1133225544)

Все правильно выбираеться только порядок не соблюден в fetch_array - выдаеться как находит по таблице 11,22,33,44,55 .... мне надо чтобы выбралось именно как я хотел ... 11, 33, 22, 55, 44 ... подскажите как прописать в ORDERe чтобы выбралося именно как надо

спасибо
Не бывает так чтоб никто нигде никак ничем :)
 Изготовление сайтов в Днепропетровске. Раскрутка, поддержка

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Простой SELECT по порядку
« Ответ #1 : 19 Марта 2008, 13:15:54 »
Мне кажется правильнее добавить в таблицу поле по которому делать Order By. и для изменения порядка вам нужно будет всего лишь сделать UPDATE для этого поля. Это не накладное решение.

есть также вариант с использованием UNION
(SELECT * FROM tbl WHERE id = 11) UNOIN(SELECT * FROM tbl WHERE id = 22)UNOIN(...)

есть вариант с созданием временной таблицы, для мускула это выглядело бы так:

CREATE TEMPORARY TABLE tmpTable(
  tmp_id INT(11) NOT NULL AUTO_INCREMENT,
  id /*здесь определение вашего ида*/
);
INSERT tmpTable (id) VALUES (11,22...44);
SELECT t.*
FROM tbl t
  INNER[FULL] JOIN tmpTable tt USING(id)
ORDER BY tt.tmp_id


но как я думаю это извраты. вместо простого селекта использование таких извратов скорее всего клиника
« Последнее редактирование: 19 Марта 2008, 13:33:06 от ravshaniy »
убили кенни, сволочи

Оффлайн kiruxa

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 209
  • +0/-0
  • 0
    • Просмотр профиля
    • http://autoxloo.com
Простой SELECT по порядку
« Ответ #2 : 19 Марта 2008, 13:38:35 »
Решил одним запросом

заработало и нфмного проще
мож кому пригодиться

SELECT *
FROM lu_country
WHERE id
IN ( 11, 33, 22, 55, 44 )
ORDER BY FIND_IN_SET( id, \'11, 33, 22, 55, 44\' )
Не бывает так чтоб никто нигде никак ничем :)
 Изготовление сайтов в Днепропетровске. Раскрутка, поддержка

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28