2017-07-27 4 views
0

Ich versuche, eine Tabelle mit anderen Tabellendaten nach dem Zusammenführen von zwei Spalten zu aktualisieren Es zeigt Fehler.Update Wählen Sie mit, wo & CONCAT Problem

Fehlercode: 1064. Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie die Handbuch, das für die richtige Syntax

Tabelle 1 zu Ihrem MySQL-Server-Version entspricht: Aufträge Tabelle 2: Benutzer

Ich versuche zu aktualisieren Aufträge Tabellenfeld name durch den Vergleich eines Feldes mit user_id in der Bestellungstabelle.

Die user_id ist mit der Benutzertabelle verknüpft. Ich versuche, first_name & last_name zu concat und aktualisieren Sie die name in Bestellungen Tabelle.

UPDATE orders SET 
(name = 
SELECT CONCAT(u.first_name, ' ', u.last_name) as full_name 
FROM users u 
WHERE u.first_name IS NOT NULL OR u.first_name <> ''); 

Der Zustand geht so.

Wenn eine ID in user_id in Tabelle orders sollte users Tabelle überprüfen id und wählen & concat first_name & last_name und die Reihenfolge Tabelle aktualisieren.

Wenn keine user_id in Bestellungen Tabelle sollte das Feld mit NONE aktualisiert werden.

Es ist kompliziert für mich, es über Query zu tun. Ich kann das in PHP machen, aber es wird nicht empfohlen. Kann jemand helfen?

Antwort

1

Vorausgesetzt Sie haben eine user_id Spalte auf der Auftragstabelle beitreten, könnten Sie dies versuchen:

UPDATE orders o SET o.name = 
    IFNULL((SELECT CONCAT(u.first_name, ' ', u.last_name) AS full_name 
      FROM users u 
      WHERE u.user_id = o.user_id 
      AND u.first_name IS NOT NULL 
      AND u.first_name <> ''), 'NONE'); 
+0

Fehlercode: 1054 Unknown column ‚o.user_id‘ in ‚where clause‘ es nicht statt die Ordertabellenspalte – TomPHP

+0

Ich ging davon aus, dass Sie eine User_id-Spalte in der Orders-Tabelle hatten, zu der Sie beitreten können, sonst wie erwarten Sie, den Namen des Benutzers herauszuholen, der der Bestellung entspricht? :) – 83N

+0

in der Reihenfolge Tabelle habe ich 'user_id' und in der Benutzertabelle habe ich' id' diese beiden Felder können beitreten – TomPHP