Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从数据库中的两个不同表中减去?_C#_Sql Server_Tsql - Fatal编程技术网

C# 如何从数据库中的两个不同表中减去?

C# 如何从数据库中的两个不同表中减去?,c#,sql-server,tsql,C#,Sql Server,Tsql,当我点击按钮时,它没有出现错误,但数据库没有改变任何东西 protected void btnBuyNow_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection(CS)) { string id = Session["UserID"].ToString(); con.Open(); Sql

当我点击按钮时,它没有出现错误,但数据库没有改变任何东西

protected void btnBuyNow_Click(object sender, EventArgs e)
{
    using (SqlConnection con = new SqlConnection(CS))
    {
        string id = Session["UserID"].ToString();
       
        con.Open();

        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;

        cmd.CommandText = "UPDATE tblProducts SET PQuantity=t1.PQuantity-t2.Quantity FROM tblOrderProducts t2 INNER JOIN tblProducts t1 ON t2.OrderProID=t1.PID";

        cmd.ExecuteNonQuery();
       
        Response.Redirect("OrderConfirmation.aspx");
        con.Close();
    }
}
查询:

更新tblProducts 设置PQuantity=t1.PQuantity-t2.数量 来自tblOrderProducts t2 t2.OrderProID=t1.PID上的内部联接tblProducts t1 尝试:

UPDATE t1
    SET PQuantity = (t1.PQuantity - t2.Quantity)
FROM tblProducts AS t1, tblOrderProducts AS t2
WHERE t2.OrderProID = t1.PID

我认为使用子查询对您有好处

UPDATE 
 SET PQuantity = (select PQuantity FROM tblProducts Where PID =t2.OrderProID ) - t2.Quantity)
FROM tblOrderProducts t2

每个人都不鼓励使用旧式联接创建订单的哪一点,即实际向tblOrderProducts添加记录。我希望执行的顺序是1。在tblOrders 2中创建您的订单猜测。添加您的订单产品3。仅使用您刚刚创建的记录更新您的数量。话虽如此,以这种方式管理您的数量并不是我的方法。如果您跟踪您的购买和销售,那么您当前的库存或过去任何给定日期的库存都可以基于这两个表进行计算,并且您不必担心维护产品的数量列。如果您还处于数据库的设计阶段,我真的建议不要使用tbl前缀。虽然这是主观的,也是您的选择,但普遍的共识是,它只会给SQL添加不必要的噪音-重新开始-并注意对以前的问题提出的所有建议和评论。你只是没有学习好习惯,没有考虑你的代码。在这里,您的代码意味着用户正在使用购物车或至少是特定的商品。您的代码应该首先为购买创建订单,然后从该产品的库存中扣除相应的金额。您的代码会更新每个订单中的每个产品。你至少在上一个问题中使用了正确的方法。