2017-04-11 7 views
1

Ich habe eine Spalte mit dem Namen loanofficer in einer Tabelle Namen prequals_created, die eine Nummer, die dieser Kreditsachbearbeiter enthält. Ich möchte diese Spalte aktualisieren, um den Namen des Kreditsachbearbeiters anstelle der Nummer zu erhalten, die sich in einer Tabelle namens appusers befindet, in der die fullname mit der loanofficer ID übereinstimmt. Ich versuche, dies zu tun, indem ich zuerst SELECT verwende, um eine Tabelle des Kreditsachbearbeiter-Namens und der ID als ein Paar zu erzeugen, indem ich eine "Zwischen" -Tabelle verwende, die loan_pairing genannt wird. Allerdings ist etwas über meine Syntax nicht möglich. Hier ist mein Code:UPDATE SQL-Spalte mit SELECT-Wert

UPDATE 
    prequals_created AS pc 
SET 
    pc.loanofficer = lonames.fullname 
FROM 
    (SELECT DISTINCT a.fullname, lp.loanofficer 
    FROM appusers AS a 
    JOIN loan_pairing AS lp 
     ON a.id = lp.loanofficer 
    JOIN prequals_created AS pc 
     ON lp.loanofficer = pc.loanofficer) AS lonames 
WHERE 
    pc.loanofficer = lonames.loanofficer 

Die SELECT-Anweisung in der FROM-Anweisung verschachtelt ist richtig, und gibt den Namen des Offiziers Darlehen mit ihren jeweiligen ID gepaart.

Was genau ist hier an meiner Syntax los?

+0

ist Ihr Fullname Spalte befindet in Appliances? –

+0

Ja, es ist (extra Zeichen) – Jodo1992

+1

Ich denke, loan_pairing TABLE hält nichts besonderes, um diesen Job zu tun, dh, die ID von Appuser ist in prequals_created Tabelle als Kreditoffizier und Sie wollen Kreditofficer mit Fullname ersetzen, die in appsuser Tabelle ist –

Antwort

1

In einer Multi-Tabelle Update-Anweisung in MySQL gehen die Joins vor der SET. Ich denke, das sollte für Sie arbeiten:

UPDATE prequals_created AS pc 
     JOIN loan_pairing AS lp 
      ON lp.loanofficer = pc.loanofficer 
     JOIN appusers AS a 
      ON a.id = lp.loanofficer 
SET  pc.loanofficer = a.fullname; 
+0

Danke, das hat wunderbar funktioniert, ich brauchte nur um auch die WHERE-Anweisung nach Ihren Änderungen einzuschließen – Jodo1992

0
UPDATE 
    prequals_created AS pc 
SET 
    pc.loanofficer = lonames.fullname 
FROM 
    appusers AS a 
    JOIN 
    loan_pairing AS lp 
     ON a.id = lp.loanofficer 
    JOIN prequals_created AS pc 
     ON lp.loanofficer = pc.loanofficer 
; 
0

unnötig entfernen Join Tisch loan_pairing und machen Sie Ihre Abfrage effektiv und effizient das ist, was wollen Sie

UPDATE 
     pc 
    FROM appusers AS a 
     JOIN prequals_created AS pc 
      ON a.id = pc.loanofficer 
SET 
     pc.loanofficer = a.fullname