сложный UPDATE

Элина

Новичок
сложный UPDATE

Здравствуйте, умные люди! ;)

У меня опять проблемка... в БД у меня такая таблица:

tbl_coordinats

tc_id AUTOINCREMENT PRIMARY KEY,
tc_coord_x INT UNSIGNED,
tc_coord_y INT UNSIGNED,
tc_coord_z INT UNSIGNED,
tc_coord_x1 INT UNSIGNED,
tc_coorc_y1 INT UNSIGNED,
tc_coord_z1 INT UNSIGNED


В таблице около 10 000 записей, в каждой ячейке содержется циферка (ну это я так, мало ли кто не поймет).

Так вот, встала передо мной задача, как сделать поиск по таблице - по каждой ячейке в конкретной строке, и если вдруг в какой-то из ячеек этой конкретной строки находим заданное число - эту ячейку меняем на ноль ("0").

Сидела я, сидела... так ничего и не придумала...

В голову пришло только - сделать 10 АПДЕЙТОВ, которые бы смотрели каждое поле и если вдруг поле равно нужному числу - апдейтим его на ноль. Но это сами понимаете - грабли.

что-то типа

UPDATE tbl_coordnats SET (if field1 = '$ciferka' field1 = 0), (if field2 = '$ciferka' field2 = 0)..... WHERE tc_id = 15

Ну что-то вроде этого :)

Для меня непонятным является то, КАК можно в одном запросе сделать проверку не одного поля, а сразу нескольких, и если вдруг одно из полей содержит то, что мне надо - апдейтнуть его на ноль.


ПОМОЖИТЕ, САМА Я НЕ МЕСТНАЯ! ;)
 

Элина

Новичок
Потому что этот апдейт будет совершаться каждым залогиненным юзером каждую минуту (по крону).

Несложно представить какая будет нагрузка на сервер. Я уже не говорю об остальной нагрузке. Пока сервер у нас не самый лучший, поэтому не хочется, чтобы сервер умер... :/
 

svetasmirnova

маленький монстрик
>Несложно представить
А зачем представлять, когда можно посчитать? Тем более что для сформулированной задачи альтернативы нет, если только для "циферок" нельзя формулу вывести.

И второй момент. "Представления" появились из-за предположения, что запросы будет генерировать PHP-скрипт, а не SQL-скрипт?
 

Steamroller

Новичок
Элина, так IF и можно использовать, только с синтаксисом аккуратно.
[sql]
UPDATE tbl_coordinates SET tc_coord_x = IF(tc_coord_x='$ciferka', 0, tc_coord_x), tc_coord_y = IF(tc_coord_y='$ciferka', 0, tc_coord_y), .... WHERE tc_id=15;
[/sql]
 
Сверху