2016-05-10 7 views
0

Ich versuche, eine Tabelle basierend auf einem Datumsbereich aus zwei separaten Tabellen (Tabelle Person und Rechnung) und auf alle, die die Quelle "Purchase" (von Personentabelle). Bitte siehe unten:UPDATE-Anweisung auf JOIN läuft ohne Fehler, aber nichts passiert

UPDATE Person 
SET Person.pers_ThankYou_Letter='Y', 
    Person.pers_newpurch='recievedLetter', 
    Person.pers_update='2016-05-09' 
FROM Person T1 
INNER JOIN dbo.invoice T2 
ON T1.Pers_PersonId = T2.invoice_personid 
WHERE 
    T1.Pers_CreateDate >= '2016-02-16' 
AND 
T2.invoice_InvDate > '2016-02-16' 
AND 
T1.Pers_Source = 'Purch'; 

Ich bin mit SQL Server Management Studio 2005. Ich verschiedene andere Wege zu gehen

SELECT * FROM Person 
UPDATE Invoice a JOIN Person b ON (a.personid = b.Pers_PersonId) 
    SET pers_ThankYou, 
    Person.pers_update='2016-05-09', 
    pers_newpurch='recievedLetter', 
    pers_update='2016-05-09' 
WHERE 
Pers_CreateDate >='2016-02-16' 
AND 
Invoice.InvDate > '2016-02-16' 
AND 
Pers_Source = 'Purch'; 

aber kein Glück versucht. Habe auch ähnliche Fragen geprüft, aber ich habe ein paar Tage mit dieser Frage verbracht, also vielen Dank im Voraus.

+0

Versuchen Sie, eine 'view' zu aktualisieren? – Kane

+0

Ah ty, ich werde das aktualisieren, versuchen, eine Tabelle zu aktualisieren, nicht eine Ansicht, es läuft jedoch mit dem gleichen Ergebnis. – Thomas

+1

Wählt 'select from ...' Zeilen zurück? –

Antwort

0

Ich glaube, dass Ihre UPDATE Aussage revidiert werden muss, entweder nicht den Alias ​​T1 in der FROM Klausel zu definieren, oder es in der SET-Klausel verwenden. (Siehe https://technet.microsoft.com/en-us/library/ms187455(v=sql.105).aspx).

die Aliasnamen zu verwenden, den Code wie folgt ändern:

UPDATE T1 
SET T1.pers_ThankYou_Letter='Y', 
    T1.pers_newpurch='recievedLetter', 
    T1.pers_update='2016-05-09' 
FROM Person T1 
INNER JOIN dbo.invoice T2 
ON T1.Pers_PersonId = T2.invoice_personid 
WHERE 
    T1.Pers_CreateDate >= '2016-02-16' 
AND 
T2.invoice_InvDate > '2016-02-16' 
AND 
T1.Pers_Source = 'Purch'; 
Verwandte Themen