2013-12-17 82 views
1

错误是'操作必须使用可更新查询'。嵌套SELECT的SQL错误

我试图用下面的信息更新'订单'表,但是只有1件商品的价格将通过文本框提供,我试图使用订购数量计算总订单价值,这将会已经在这张桌子上了。

下面的代码包含从变量中获取的数据。 “增值税= 2”和“价格= 2”中的2是单个单位的价格(2.00英镑)。总订单价值将存储在“价格”字段中,并且应使用相同的代码计算增值税,但时间增加0.2以提供20%的增值税。

UPDATE orders 
    SET Invoice_number = 'IN9999', 
     delivery_note_number = 'DN6000', 
     price =2 * 
     (SELECT quantity 
      FROM orders 
      WHERE purchase_order_number = 'PO7512' 
     ), 
     VAT = (2 * 
     (SELECT quantity 
      FROM orders 
      WHERE purchase_order_number = 'PO7512' 
     )/100) * 20, 
     shipping = 3 
WHERE purchase_order_number = 'PO7512' 

也许我不能用这种方式使用嵌套查询。我不确定,但任何帮助将不胜感激:)谢谢!

+0

这与您的子查询没有任何关系。它可能与'[orders]'不是一个表,或者至少不是一个可更新的表。 – RBarryYoung

回答

2

相反subquerying的,您可以直接访问整个记录的更新,像这样:

UPDATE Orders 
    SET Invoice_number = 'IN9999', 
     Delivery_note_number = 'DN6000', 
     Price = 2 * quantity, 
     VAT = (40 * quantity)/100, 
     Shipping = 3 
WHERE purchase_order_number = 'PO7512' 

注意与馏分它总是最好先乘后来划分。

+0

您的查询不指定数量来自哪里。 – Dai

+0

@Dai Quantity是行中的一列... – Sklivvz

+0

哦,所以即使在查询中没有选择它,我仍然可以使用数量的值吗?我只是试过这个代码,但仍然有同样的错误。 – darkjoe31