2010-10-05 29 views
19

Hatam bu sorguda herhangi birileri bulabilir mi? SQL Server 2000 kullanıyorum ve CostEntry tablosundaki tüm girdileri ActiveCostDetails tablosundaki karşılık gelen değere güncelleştirmek istiyorum. Nerede DOE, select deyimi ile çalışır.İç güncelleştirme ile SQL güncelleştirme sorgusu sözdizimi

UPDATE CostEntry CE 
INNER JOIN ActiveCostDetails As AD ON CostEntry.lUniqueID = ActiveCostDetails.UniqueID 
     SET CostEntry.sJobNumber = ActiveCostDetails.JobNumber 
    WHERE CostEntry.SEmployeeCode = '002' 
     AND SubString(CostCentre, 1, 1) = sDepartmentCode 
     AND substring(CostCentre, 3, 1) = sCategoryCode 
     AND substring(CostCentre, 5, 2) = sOperationCode 
+0

@OMG Ponies- Teşekkür çalışması gerekir, ancak bu sorgu orijinal aynı etkiyi (sözdizimi hatası nedeniyle çalışmıyor) sahiptir. Bunun nedeni, SQL sunucusunun bir sorguda boşlukları ve satırbaşı iadelerini yok saymasıdır. – MAW74656

+0

Sadece gönderdiklerinizi yeniden biçimlendirdim - daha kolay okunabilir, daha kolay yardım –

+0

Tamam ponies anlıyorum. Bir örnekte çalışıyordum, çevrimiçi ... http://www.tek-tips.com/faqs.cfm?fid=1958 Ama senin yolun daha iyi. – MAW74656

cevap

40

SET ihtiyaçları sorgunun FROM\JOIN\WHERE kısmından önce gelmek.

UPDATE CE 
SET sJobNumber = AD.JobNumber 
FROM CostEntry CE 
    INNER JOIN ActiveCostDetails As AD 
     ON CE.lUniqueID = AD.UniqueID 
WHERE CE.SEmployeeCode = '002' 
    AND SubString(CostCentre, 1, 1) = sDepartmentCode 
    AND substring(CostCentre, 3, 1) = sCategoryCode 
    AND substring(CostCentre, 5, 2) = sOperationCode 
+0

+1: [SS2000 Güncelleştirme belgeleri] (http://msdn.microsoft.com/en-us/library/aa260662%28SQL.80%29.aspx) –

+0

@Joe Stefanelli - Kapat, ancak ayrıştırıcı sevmiyor takma adın ayarlandığı adlar. – MAW74656

+0

Bu çalıştı: GÜNCELLEME CE SET CE.sJobNumber = AD.JobNumber CostEntry CE İÇ CE.lUniqueID = AD.UniqueID NEREDE CE.SEmployeeCode = '002' ve substring (CostCentre, 1 AÇIK AD gibi ActiveCostDetails KATILIN DAN , 1) = sDepartmentCode VE substring (CostCentre, 3, 1) = sCategoryKodu VE substring (CostCentre, 5, 2) = sOperationCode – MAW74656

1

Bu seyir için

UPDATE CE 
SET CostEntry.sJobNumber = ActiveCostDetails.JobNumber 
FROM CostEntry CE 
INNER JOIN ActiveCostDetails As AD ON CostEntry.lUniqueID = ActiveCostDetails.UniqueID  
    WHERE CostEntry.SEmployeeCode = '002' 
     AND SubString(CostCentre, 1, 1) = sDepartmentCode 
     AND substring(CostCentre, 3, 1) = sCategoryCode 
     AND substring(CostCentre, 5, 2) = sOperationCode 
+2

Vay, eski soru .... bunu daha önce bilmediğim kadar utanç verici ... – MAW74656

İlgili konular