Множественный запрос UPDATE

Qass

Новичок
Множественный запрос UPDATE

Вопрос в том что пытался оптимизировать запросы к БД MySQL
есть куча запросов на изменение таблицы

$qu="update $table set var=1, var1=12 where goo=1";
mysql_query($qu,$link);
$qu="update $table set var=2, var1=23 where goo=2";
mysql_query($qu,$link);

а вокруг, них идут всукие проверки выборки(select),которые точно не затронут данные аппдейты,

апдейты разные и нельзя их связать в один.
хотелось бы узнать с какой стороны стоит ограничение PHP или MySQl
что не могут выполняться запросы типа

$qu="update $table set var=1, var1=12 where goo=1; update $table set var=2, var1=23 where goo=2";
mysql_query($qu,$link);

Вроде раньше сталкивался с чем то подобным, всмысле проблемы, но решения не нашел.
Может кто знает чем это можно решить, может у кого есть интересные, правильные решения.
Желательно чтобы были рабочие решения, или точное объяснение причины не выполнения данного большого запроса.
 

BAR

Новичок
У тебя таблица одна!
$qu="update $table set var=1, var1=12 where goo=1";
mysql_query($qu,$link);

mysql_query($qu,$link) редактирует 1 запрос(можно подзапрос, но не в твоём варианте).
Если есть новые вносимые даные, то делай через цыкл (for).

Иначе нельзя..... :)
 

Qass

Новичок
Автор оригинала: BAR
Если есть новые вносимые даные, то делай через цыкл (for).

Иначе нельзя..... :)
Через цикл сейчас происходит ,но вот вокруг update есть много всего select и делете
хотелось бы чтобы собрать все update в одну переменную и разом ее за query-ть

как выход собирать все эти апдейты в массив и потом для каждого элемента делать
свой query тоже не хочется ((

Может еще кто что нибудь подскажет.?
 

Qass

Новичок
WP
Можно чуть информативнее куда when/then впихнуть и что это за when и с каким then его готовят. как я понял это что то типа управления какого то.
И куда и как его вставить, чтобы у меня сразу же куча update проходила одним запросом.
 

Андрейка

Senior pomidor developer
>но вот вокруг update есть много всего select и делете
>все update в одну переменную и разом ее за query-ть
как одно с другим связано и чем вызвано такое навязчивое желание свалить "все update в одну переменную и разом ее за query-ть" ?
 

BAR

Новичок
SelenIT
UPDATE mytable SET var = CASE goo WHEN 1 THEN 1 WHEN 2 THEN 2 END , var1 = CASE goo WHEN 1 THEN 12 WHEN 2 THEN 23 END WHERE goo IN ( 1, 2 )
А если переменных много, то можно замучатся. А стою над тем что оставил update в покои(один за другим), и забивал себе мозги.... Лучше сделать проще один за другим чем сложнее, а потом искать пол дня что что-то у тебя неиграет!
 

Qass

Новичок
Похоже простого выхода не существует, ну да ладно.
Может есть мысли относительно mysqli для php5, если это возможно в 5php подскажите, буду признателен
Очень мучеет вопрос почему нельзя?
Сейчас стоит 4 какой то, но если будет в пятой проходить такая весчь, то навернное задумаюсь о переносе.
Ответьте, кто может протестировать это на 5php возможно понадобится расширение mysqli, покрайней
мере были такие предложения )).
Конструкция when/ then мне кажется, не совсем подойдет потому что, конечные WHERE может содержать разные id
или эти id идут как раз в управляющую конструкцию when/then, when id=1 then 1 when id=2 then=2 так ?
 
Андрейка,


Вопрос в том что пытался оптимизировать запросы к БД MySQL
Qass, только не нужно это тебе...
ты уверен что именно запросы update и есть самое узкое(тормозючее) место в твоей системе?
 

Qass

Новичок
Автор оригинала: Winnie Pooh
Qass, только не нужно это тебе...
ты уверен что именно запросы update и есть самое узкое(тормозючее) место в твоей системе?
Да нет update то как раз наверное не самое тормозное место, тормозов много когда сначала идут проверки
select и затем как аппдейтится происходят delete. Я вот и хотел собрать все update в кучку и разом их прогнать.
Ладно наверное не судьба, буду собирать все в массив и потом для всех элементов делать query.
 
Сверху