Подскажите с запросом

Cruiser

Новичок
Подскажите с запросом

Есть таблица с 3-мя полями - user_id, good_id, kolvo (корзина заказов т.е.)
Как сделать правильно обновление корзины?
Т.е. если товар уже есть в корзине обновить количество. А если нету такого товара то добавить.
Я че то не додумаю как это в одном запросе сделать :(
 

Cruiser

Новичок
Можно не в одном...
Чтоб алгоритм попроще.
Ведь добавляться может не единичный товар а из массива.
Т.е. я вижу главный запрос как insert, но вот где проверку делать на наличие id товара.
 

Фанат

oncle terrible
Команда форума
в mysql есть REPLACE
но проблема с добавлением товаров в корзину - не та, ради которой стоит париться.
 

vladax

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

Cruiser

Новичок
vladax, я тоже в сессии

Фанат, дык REPLACE добавляет строки а если уникальное поле совпадает то заменяет всю строку?
Так это то что надо :)
 

RST. Angellab

Guest
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expression, ... ]


Если вы указываете ON DUPLICATE KEY UPDATE (новшество в MySQL 4.1.0), и производится вставка строки, которая вызывает ошибку дублирующегося первичного (PRIMARY) или уникального (UNIQUE) ключа, то вполняется UPDATE старой строки. Например:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
--> ON DUPLICATE KEY UPDATE c=c+1;

Если a определяется как UNIQUE и уже содержит 1, то тогда вышеуказанная команда будет аналогична следующей:
mysql> UPDATE table SET c=c+1 WHERE a=1;

Внимание: если столбец b также является уникальным ключем, то UPDATE переписывается как:
mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
 
Сверху