2010-10-05 30 views
19

Có ai có thể tìm thấy lỗi của tôi trong truy vấn này không? Tôi đang sử dụng SQL Server 2000 và tôi muốn cập nhật tất cả các mục trong bảng CostEntry với giá trị tương ứng trong bảng ActiveCostDetails. Mệnh đề where DOES làm việc với câu lệnh select.Cú pháp truy vấn cập nhật SQL với tham gia bên trong

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- Cám ơn tìm kiếm, nhưng truy vấn này có tác dụng tương tự như bản gốc (không hoạt động do lỗi cú pháp). Tôi tin rằng điều này là bởi vì máy chủ SQL bỏ qua các dấu cách và vận chuyển trong một truy vấn. – MAW74656

+0

Tôi vừa định dạng lại những gì bạn đã đăng - dễ đọc hơn, dễ dàng hơn để giúp đỡ –

+0

Ok ngựa non, tôi hiểu. Tôi đã làm việc ra một ví dụ, trực tuyến ... http://www.tek-tips.com/faqs.cfm?fid=1958 Nhưng cách của bạn là tốt hơn. – MAW74656

Trả lời

40

SET cần phải đến trước phần FROM\JOIN\WHERE truy vấn.

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: [Tài liệu cập nhật SS2000] (http://msdn.microsoft.com/en-us/library/aa260662%28SQL.80%29.aspx) –

+0

@Joe Stefanelli - Đóng, nhưng trình phân tích cú pháp không thích tên khi đặt bí danh. – MAW74656

+0

này làm việc: UPDATE CE SET CE.sJobNumber = AD.JobNumber TỪ CostEntry CE INNER JOIN ActiveCostDetails Như AD ON CE.lUniqueID = AD.UniqueID ĐÂU CE.SEmployeeCode = '002' VÀ substring (CostCentre, 1 , 1) = sDepartmentCode VÀ chuỗi con (CostCentre, 3, 1) = sCategoryCode VÀ chuỗi con (CostCentre, 5, 2) = sOperationCode – MAW74656

1

này nên làm việc

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

Wow, câu hỏi cũ .... khá lúng túng mà tôi không biết điều này trở lại sau đó ... – MAW74656

Các vấn đề liên quan