Порядок в MySQL

Petroffs

Новичок
Порядок в MySQL

Не знаю, решается ли такая проблема.

Я написал функцию, которая во входном параметре принимает строку - это может быть число или несколько чисел, разделенных запятой.
Ее мне надо иногда вызывать подобным образом:
PHP:
func(1) или func("3,4,1")
В базе находятся данные с индексами:
PHP:
1 | данные
2 | данные
3 | данные
4 | данные
при вызове функции идет обращение к базе
PHP:
select * from tables.table1 where id in '$var'
$var - и есть приемный параметр.
Мне надо сделать так чтбы при вызове функции func("3,4,1") - данные выводились именно в таком же порядке (3 4 1), а MySQL выдает их в порядке 1, 3, 4

Как тут лучше выйти из такого положения?
 

Petroffs

Новичок
т.е. тока руками, mysql сама ничё не сделает?
просто руками то - долго думать скрипт будет, скорее всего - покаааа там все сверит...
 

tony2001

TeaM PHPClub
>mysql сама ничё не сделает?

"this machine has no brain, use your own" (c)

подумай головой и добавь доп. поле для той сортировки, которая ТЕБЕ нужна.
 

Petroffs

Новичок
я об этом думал уже, но здесь уже не совсем получается то
что мне нужно....

скорее так и придется делать...

но неплохо было бы если б MySQL могла такой запрос правильно обрабатывать...
 

Red Hat

Guest
Либо действительно вводишь доп. поле, либо если кол-во принимаемых чисел в разумных пределах, то в функции парсишь принимаемые параметры и приводишь запрос к виду

SELECT * FROM `tables.table1` WHERE `id` = 3 UNION SELECT * FROM `tables.table1` WHERE `id` = 4 UNION SELECT * FROM `tables.table1` WHERE `id` = 1
 

Petroffs

Новичок
Red Hat
Спасибо огромное, это именно то (кажется) что нужно, тут будет как-раз по 3-4 числа!!!
 

Фанат

oncle terrible
Команда форума
просто руками то - долго думать скрипт будет, скорее всего - покаааа там все сверит...
будет как-раз по 3-4 числа!!!
интересно, что ж это за компьютер, для которого сверить 3-4 числа - непосильная задача.
Может, лучше скинуться несчастному Petroffs на новое железо? У меня где-то 486 завалялся.
 

Petroffs

Новичок
Фанат
Давайте! Я от помощи неоткажусь...

3-4 числа сверить со 100 (хотябы) записями в бд.
3*100 - уже 300 итераций вапщето.

Пусть система на более серьезных задачах напрягается.
 

Фанат

oncle terrible
Команда форума
Чувак, ты тормозишь.
Тебе сказали, в самом первом посте, выбрать свои 3-4 числа, и потом их отсортировать.
Всё делается в три строчки и никаких сложных задач.
 

Petroffs

Новичок
Зачем их сортировать? Они данные должны выцепляться именно заданным порядком (3 4 1) например...

В общем выход такой получается (подробности опущены):
PHP:
$a = array();
$b = array(3,4,1);
foreach ($b as $value) {
  $a[]=select * from table1 where id in '$value';
}
и в массиве $a будут храниться нужные мне данные в нужном мне порядке.

такой выход наиболее оптимальный, я считаю (если не торомжу:)).
 

Фанат

oncle terrible
Команда форума
поясни, пожалуйста, какую ты видишь разницу между словами "сортировать" и "выцепляться именно заданным порядком "
без пояснения этой разницы твоё утверждение выглядит бессмысленным.
 

Petroffs

Новичок
В определениях "сортировать" и "выцеплять именно заданным порядком" разницы нет.

Автор оригинала: Фанат
Тебе сказали ... выбрать свои 3-4 числа, и потом их отсортировать.
Вдумайся, "выбрать 3-4 числа и их отсортировать" - вот их не надо "потом сотрировать", они такие есть, их надо такими использовать. Вот в чем разница.

Смотри контекст и не придирайся налету к выражениям.
 

Фанат

oncle terrible
Команда форума
короче, можешь не напрягаться.
Я в курсе, что на этом форуме заставлять большинство посетителей подумать своей головой бессмысленно.
А уж после того, как ему дали кривой код, но который решает поставленную задачу - и вовсе бесполезно.

Единственное, что можно сделать - это поместить глупость в корзину
 
Сверху