我需要在店面购买产品时归档产品。我正在考虑做一个SQL JOIN但不确定......
这是我需要运行的查询吗?
UPDATE product
INNER JOIN cart on cart.product_id = product.id
SET product.archive = 1
车
id (int)
product_id (int)
quantity (int)
产品
id (int)
name (varchar 45)
price (decimal 10,2)
quantity (int)
image (varchar 255)
archive (tinyint) default 0
答案 0 :(得分:0)
这似乎是你想要使用触发器的情况。每次在Cart表中添加新行时,它都应该将product.archive更新为1(或对Product表的任何其他更改)。
DELIMITER $$
CREATE TRIGGER tg
AFTER INSERT ON Cart
FOR EACH ROW
BEGIN
UPDATE Product
SET archive = 1
WHERE Product.id = NEW.product_id;
END $$
请注意我是MySQL的新手,我不确定这是否是正确的方法。
答案 1 :(得分:0)
让我们仔细研究这个问题
UPDATE product
INNER JOIN cart on cart.product_id = product.id
SET product.archive = 1
这个查询有什么作用?它存档已放入至少一个用户购物车的每个产品。当然,这不是你想要的?您的购物车表中没有用户ID。你确定购物车中的哪个项目属于哪个用户?请考虑在表格中添加这样的列。
产品只有在数量达到零时才能存档吗?但它应该归档吗?如果每个查询中的表中都有一个存档列,则需要有一个检查此标志的子句
SELECT * FROM product WHERE archive = 1 /* or 0 */
但是这个归档列只能取两个值中的一个,这使得该列上的索引完全无用。因此,随着数据的增长,您的查询将变得越来越慢。