Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > update в старом mysql


Автор: ksnk 17.11.2008, 14:08
Возникла проблема с хостером. У него  MySQL 3.23.58. К сожалению, это не лечится. Соответственно некоторые запросы, которые нормальные люди нормально выполняют он считает ошибочными, в частности update из одной таблицы в другую.
Вот такой запрос был. И работал на версиях старше 4.xx (точнее версию не помню, но, наверное не важно...) По смыслу, сначала сложным образом создается и заполняется временная таблица linza_temp , затем она вливается в linza_katalog. Этот запрос должен был по идее обновить существующие в таблице записи, перечисленные в linza_temp.
Код

UPDATE linza_katalog as x 
LEFT JOIN linza_temp as y ON x.articul = y.articul 
SET x.xarticle=y.xarticle,x.article=y.article,x.descr=y.descr,
x.proisv=y.proisv,x.edism=y.edism,x.descr1=y.descr1,
x.descr2=y.descr2,x.descr3=y.descr3,x.descr4=y.descr4,
x.descr5=y.descr5,x.descr6=y.descr6,x.sdescr=y.sdescr,x.cost=y.cost 
where x.haract = y.haract and y.articul<>""; 

Сейчас тот mysql утверждает, что
Код

You have an error in your SQL syntax near 'as x LEFT JOIN linza_temp as y ON x.articul = y.articul SET ...


Как его можно переписать, чтобы работало и на таком mysql?

Автор: Nigel 18.11.2008, 21:46
ksnk, а Join'ы в какой версии появились?
Цитата
Как его можно переписать, чтобы работало и на таком mysql?

А переписать легко, достаточно разбить на 2 запроса.
Сначала селект из одной таблицы, потом апдейт другой.

Автор: ksnk 20.11.2008, 18:25
Nigel, по всей видимости, до 4-й версии не было возможности использовать связанные таблицы. 

Но я уже переписал это на циклы. Для нормальных хостингов - нормальные запросы, для этого - как могу. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)