通过mysql在表中插入过程的值

Insert value through procedure in a table by mysql

提问人:Kinza khan 提问时间:4/26/2023 最后编辑:marc_sKinza khan 更新时间:5/24/2023 访问量:46

问:

我想使用过程将值插入到表中。我有 2 张桌子和;在表格中,我有列,在表格中,我有和 .salesproductsproductid, product_name,product_price, product_quantitysalesp_idp_qty

当用户在表中添加值时,我想使用一个过程;此过程应为 和 获取 2 个参数。salesp_idp_qty

如果小于 0 或大于 ,则 showstock 不可用p_qtyproduct_quantity

在此处输入图像描述

mysql if-statement 条件语句 phpmyadmin insert

评论

0赞 Barmar 4/26/2023
请以文本形式发布代码、数据和结果,而不是屏幕截图。为什么我不应该上传代码/数据/错误的图片? idownvotedbecau.se/imageofcode
0赞 Barmar 4/26/2023
不能在表的查询之外使用。应该意味着什么?该表有很多行,您要与哪个数量进行比较?products.product_quantityproduct_qty_proc > products.product_quantityproducts
0赞 Kinza khan 4/26/2023
产品数量从产品表中可以看出 20、30 ...而在销售表中,如果用户添加的数量超过范围,则用户无法增加价值

答:

0赞 Barmar 4/26/2023 #1

product_qty_proc > products.product_quantity需要在查询中引用表中的特定行。您可以使用子查询来选择 的数量。将该条件替换为:productsproduct_id_proc

product_qty_proc > (
    SELECT product_quantity 
    FROM products 
    WHERE product_id = product_id_proc
)

此外,应该是 .product_qty_proc>0product_qty_proc<0

0赞 Kinza khan 4/26/2023 #2

这是我的查询

DELIMITER //
CREATE PROCEDURE find_qty_(
    product_id_proc INT,
    product_qty_proc INT
)
BEGIN
    DECLARE
        remaining_stock INT; 
        SELECT product_quantity INTO remaining_stock FROM products
        WHERE id = product_id_proc; 
        IF product_qty_proc>=0 OR product_qty_proc>remaining_stock THEN 
            BEGIN SELECT "stock not available";
            END;
        ELSE 
            INSERT into sales(p_id,p_qty)VALUES(product_id_proc,product_qty_proc);
        END IF; 
    END;;

评论

0赞 Barmar 4/26/2023
问题说“小于0”,为什么你的病情?>=0
0赞 Kinza khan 4/26/2023
这两个条件都是正确的。在这两种情况下,库存均不为 0 或小于零
0赞 Barmar 4/26/2023
哦,现在我看到你有 in 而不是 ,所以条件是相反的。INSERTELSEIF
0赞 Community 4/27/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Kinza khan 4/28/2023
我的查询是,我想在具有两个参数的销售表中插入值,第一个参数是product_id_proc,另一个是product_qty_proc如果用户添加的产品数量大于产品表数量中的值,它应该是一个错误显示,显示库存不可用,或者如果用户数量小于或等于产品表数量,则应在销售中插入值表格注意最初销售表是空白的,我的错误发生在条件语句中,因此当产品数量大于库存时,所有数据都插入到销售表中,