2012-06-23 24 views
0

我正尝试在C#asp.net的sql数据库中将一个购物篮写入订单+订单行。 订单行将包含购物篮中每个商品的订单编号,总价格,生产量,数量等。订单本身将包含订单号作为主键,并且将通过它连接到不同的行。 昨天一切正常,但现在,因为我试图在插入语句中使用SELECT命令来让事情更动态我得到上述语法错误。INSERT INTO ...在连接运算符中选择语法错误

有谁知道什么地方错了这种说法:

INSERT INTO [order] 
     (klant_id,totaalprijs,btw,subtotaal,verzendkosten) 
SELECT klant.id 
,  SUM(orderregel.totaalprijs) 
,  SUM(orderregel.btw) 
,  SUM(orderregel.totaalprijs) - SUM(orderregel.btw) 
,  7.50 
FROM orderregel 
INNER JOIN 
     klant 
ON  [order].klant_id = klant.id 
WHERE klant.username = 'jerry' 
GROUP BY 
     id; 

在“命令”表中的订单号码是自动编号,在asp代码隐藏有一个针对每个处理线正在为每一个产品编写,在这个循环之外有一个索引设置在0之上,每增加1个索引就会增加一个索引。订单的执行查询仅在第一个循环的开始时执行一次,并且在MAX(ordernumber)与ordernumber之后添加行。

我希望我已经提供了足够的信息,有人能够帮助我。 在此先感谢!

编辑: 感谢大家,使用此查询做到了!

INSERT INTO [指令] (klant_id,totaalprijs,顺便说一句,subtotaal,verzendkosten)选择(SELECT klant.id FROM klant WHERE klant.username = '杰里'),
SUM(orderregel.totaalprijs), SUM(orderregel.btw),
SUM(orderregel.totaalprijs) - SUM(orderregel.btw),7.50 FROM
orderregel;

+0

编辑您的查询将无法工作。尝试插入两个订单。然后检查您的第二笔订单的总价是否正确。 – Andomar

+0

嗯是的,我注意到了这一点,你在这里看到的位置吗?我试着独自现在做,但成天和编程布希是在下班后回家不是我的因子评分过程太好;) – user1477356

+0

你必须弄清楚如何插入订单和订单行之间的关系。我的答案中有一个可能的解决方案。我睡了一夜就可以了:) – Andomar

回答

3

您在JOIN中使用了[order],应该是orderregel我猜。

FROM orderregel 
    INNER JOIN klant ON [order].klant_id = klant.id 

应该是:

FROM orderregel 
    INNER JOIN klant ON orderregel.klant_id = klant.id 

编辑:

为什么不直接使用:

INSERT INTO [order] 
     (klant_id,totaalprijs,btw,subtotaal,verzendkosten) 
SELECT (SELECT klant.id FROM klant WHERE klant.username = 'jerry') 
,  SUM(orderregel.totaalprijs) 
,... 

...并避免与klant表连接?

+1

另外,那里有'GROUP BY id',就不能不提表,这可能OOK导致错误(如果使用的是与列“ID‘多个表) – poncha

+0

’客户”是指客户在荷兰;这是不可能的,网上下订单将有一个关系到客户。 – Andomar

+0

@poncha - 是的,但错误是在JOIN部分这段时间 –

1

您无法引用正在插入的表格。毕竟,在插入完成之前,这些行尚未存在!

阅读您的查询,很明显,您正试图插入名为Jerryklant。但是,您如何指定哪些订单项用于插入?

一种可能的解决方案:

  1. 第一写的顺序,与klant ID
  2. 创建订单行。你知道第一个查询中的orderid(f.e.使用select SCOPE_IDENTITY()
  3. 更新与订单总数
+0

内的选择:)谢谢你的反应,你是绝对正确的位置。我在读从后面user.authenticated内置功能的C#代码客户的用户名。有没有什么办法来INNER为察觉的所有问题与查询JOIN客户ON klant.username =“杰里” 我就动参数在后面的代码,然后... – user1477356

+0

+1 –

0

试试这个: INSERT INTO [为了] (klant_id,总价格,税收,小计,运费) klant.id SELECT SUM(orderregel.totaalprijs) ,SUM(orderregel.btw) ,SUM(orderregel.totaalprijs) - SUM(orderregel.btw) ,7:50 FROM订单 INNER JOIN客户ON orderregel.id = klant.id
INNER JOIN [顺序] ON [订单] .client_id = customer.id
WHERE klant.username = '杰里' GROUP BY ID;