2012-06-23 45 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;