select * from table -- best of the best of the best адовых запросов)Скорее, дожили что, люди боятся узнать о SQL чуть более чем select * from table.
UPDATE ordered_products SET count = IF(:count < (SELECT in_stock FROM products WHERE id=:product_id),:count,(SELECT in_stock FROM products WHERE id=:product_id))
WHERE product_id = (SELECT id FROM products WHERE id=:product_id)
AND order_id = (SELECT id FROM `order` WHERE cookie_id = :cookie)
+1 запрос к той же таблице.два раза вложенный SELECT in_stock FROM products WHERE id=roduct_id - почему-то не получилось alias привязать, само-собой все это обернуто в try catch
UPDATE ordered_products SET count = :count
WHERE product_id = (SELECT id FROM products WHERE id=:product_id)
AND order_id = (SELECT id FROM `order` WHERE cookie_id = :cookie)
SELECT in_stock FROM products WHERE id=:product_id
Им же проще и id выбрать.сейчас такой остался
а перед этимPHP:UPDATE ordered_products SET count = :count WHERE product_id = (SELECT id FROM products WHERE id=:product_id) AND order_id = (SELECT id FROM `order` WHERE cookie_id = :cookie)
ага, так и есть.PHP:SELECT in_stock FROM products WHERE id=:product_id
Эм, это не экономия на спичках?Им же проще и id выбрать.
Ну навряд ли он поменяется по ходу заказа, сначала хранил это в сессии, теперь вот решил из бд брать.А in_stock ты апдейтишь после кидания в заказ?
SELECT id as order_id FROM `order` WHERE cookie_id = :cookie
SELECT id as product_id, in_stock FROM products WHERE id=:product_id /* хотя вот тут даже id выбирать необязательно, если in_stock выбран, то :product_id в апдейт итак пойдет */
UPDATE ordered_products SET count = :count WHERE order_id = :order_id AND product_id = :product_id
простой select vs вложенныйjoin vs вложеный SELECT.
Нет, кто первый встал, того и тапки =)простой select vs вложенный
а про апдейт in_stock я к тому, что закажет у тебя посетитель 80 пар носков из 80, а потом придет еще один через секунду и захочет заказать столько же и in_stock ему позволит это.