Подскажите, как правильно составить запрос

storng

Новичок
Подскажите, как правильно составить запрос

Здравствуйте,
подскажите, пожалуйста, как правильно составить sql-запрос

в данный момент в среде php у меня есть массив $id с id элементов

$id['0']=100;
$id['1']=105;
$id['2']=201;
$id['3']=403;


Есть в mysql таблица с полями id,name

Мне с помощью select'a нужно получить выборку из этой таблицы всех элементов у которых ID содержится в массиве $id[]

Была идея обойти в цикле массив, и собрать запрос, но элементов в массиве может быть 1000, да и чувствую, что есть способ проще.

надоумьте, пожалуйста, с запросиком.
 

Фанат

oncle terrible
Команда форума
WHERE id IN (100,105,201)

-~{}~ 27.04.10 12:06:

но 1000 элементов - это многовато.
откуда берется этот массив?
 

storng

Новичок
Автор оригинала: *****
WHERE id IN (100,105,201)

-~{}~ 27.04.10 12:06:

но 1000 элементов - это многовато.
откуда берется этот массив?
Массив берётся из формы:
там две таблицы в одну загружается список элементов из базы, в другую пользователь перетягивает элементы мышкой, вторая таблица содержит кроме строк самой таблицы также скрытые поля формы содержащие id элемента:

PHP:
'<input  name="addus[]" type="hidden"  value="'.$row['groupappl_user_id'].'" />'
, при сабмите серверный скрипт должен получить выборку из базы всех выбранных элементов.

-~{}~ 27.04.10 12:12:

Может имеет смысл загрузить данные во временную таблицу, и дальше сделать запрос с подзапросом?

типа where id in (select id from temp) и т.п.
 

akd

dive now, work later
Команда форума
имеет. и потом where exists (select 1 from temp where ...) вместо id in ...
 

storng

Новичок
Фaнaт, не совсем понял, можете пример запроса привести?

Мне подумалось, что проще сделать что-нибудь типа
"CREATE TEMPORARY TABLE tbl_id" загрузить в неё id, и далее уже поработав с ней не заморачиваться с удалением элементов и т.п, т.к. сама при закрытии соединения должна удалиться.
 

Фанат

oncle terrible
Команда форума
зачем писать селект, который запишет во временную, а потом писать селект, который будет читать из временной? почему не использовать результат первого селекта СРАЗУ?
 

storng

Новичок
Автор оригинала: *****
зачем писать селект, который запишет во временную, а потом писать селект, который будет читать из временной? почему не использовать результат первого селекта СРАЗУ?
Так может быть большой массив данных, и тогда не факт что конструкция WHERE id IN (100,200,300) отработается легко
 

Фанат

oncle terrible
Команда форума
да при чем здесь конструкция WHERE id IN (100,200,300), если у тебя конструкция WHERE id IN (select...)?
 
Сверху