2013-04-09 27 views
2

首先,它應該是很容易的DB'es但它確實給我在這裏痛苦,我不知道爲什麼,,更新柱聯接列,,

我有兩個表,[表1]命名Applicationforms和[命名WFInstance 表2]我需要與表2 的startedDate值,其中FormSubmitDate爲空更新表1的FormSubmitDate。 我寫了下面的查詢

UPDATE ApplicationForm 
SET    FormSubmitDate = wfi.StartDate 
FROM   ApplicationForm app , 
         WorkFlowInstances wfi 

WHERE  app.FormSubmitDate is null and wfi.applicationID = app.ID 

當我運行查詢的SQL重新生成查詢到這一個,,

UPDATE ApplicationForm 
SET    FormSubmitDate = wfi.StartDate 
FROM   ApplicationForm AS app INNER JOIN 
         WorkFlowInstances AS wfi ON app.ID = wfi.ApplicationID CROSS JOIN 
         ApplicationForm 
WHERE  (app.FormSubmitDate IS NULL) 

我試圖使用連接到另寫statment ,,

UPDATE ApplicationForm 
SET FormSubmitDate = wfi.StartDate 
FROM ApplicationForm 
JOIN WorkFlowInstances wfi ON ApplicationForm.ID = wfi.ApplicationID 
WHERE FormSubmitDate is null 

和SQL生成相同的新語法,,

現在,當我運行代碼時, [所有記錄] formSubmitDate字段用第二個表的第一個值startDate填充。即使我有一個記錄包含什麼,我在這裏缺少table1中

空值!?

+0

做我的,你的建議幫助嗎? – idipous 2013-04-09 07:40:11

回答

3

我想這你想要做什麼。試試吧,讓我們知道。

UPDATE tabl3 
SET formsubmitdate=(SELECT startdate 
    FROM table4 
    WHERE table4.id=tabl3.id AND tabl3.formsubmitdate is null); 

另一種方式來寫同樣的事情將是

UPDATE tabl3 
SET formsubmitdate= startdate 
FROM table4 where tabl3.id = table4.id and formsubmitdate is null 
+0

最後,,第二查詢工作,,我可以問一下你爲什麼從表4中,因爲我們需要在表3中更新?! 我正在嘗試相同的查詢,但與[從表3] ,,, 我不是很好的數據庫,但作爲票價,我知道聯接返回馬赫記錄是正確的?! – Moe 2013-04-09 07:58:50

+0

它是從table4開始的,這就是它工作的原因。連接返回滿足條件的所有行。我寫的內容與加入的概念不同。 – idipous 2013-04-09 08:57:43