2016-05-06 9 views
0

Ich habe zwei Tabellen. Einer heißt empdata, der andere ist empinfo.Zwei Tabellen - Wenn Alter ist kleiner als, dann tun Sie

empdata (rohe Mitarbeiterdaten) - Alter Spalte hat Mitarbeiter Alter.

eminfo (dev Infoseite) - isUnderage ist eine BIT 0/1 true/false Spalte.

Ich versuche, den folgenden zu erstellen, wenn Anweisung die gesamte Tabelle zu aktualisieren: IF Mitarbeiter unter 17 wird dann 1 ELSE 0

Hier ist, was ich habe, so weit und ich bekomme Fehler mit MySql:

empdata (raw Mitarbeiterdaten) - hat Mitarbeiter-IDs in einer Spalte mit dem Namen "Dateinummer"

empinfo (dev Info-Seite) - hat den gleichen Mitarbeiter-IDs unter einer Spalte "empid" genannt

UPDATE isUnderage 
     isUnderage = CASE empdata.Age 
     WHEN empdata.Age > 17 THEN 1 
      ELSE 0 
     END, 
FROM empinfo 
+0

UPDATE Syntax von MySQL gehen. http://dev.mysql.com/doc/refman/5.7/en/update.html –

+0

Was ist die Beziehung zwischen zwei Tabellen? Gibt es eine eindeutige ID? – JYoThI

Antwort

1

Aktualisierungsabfrage wird wie folgt aussehen:

UPDATE empinfo t1 
INNER JOIN empdata t2 
ON t1.empid = t2.FileNumber 
SET t1.isUnderage = IF(t2.Age > 17, 1, 0); 
+0

Irgendwelche Ideen hier? Die Kolumne ist definitiv da. --ERROR: # 1054 - Unbekannte Spalte 'empdata.Age' in 'Feldliste' – hinteractive02

+0

Alter ist da in der EMPInfo-Tabelle ?? –

+0

Der Mitarbeiter 'Alter' ist in der empdata aufgeführt. 'isUnderage' ist auf der empinfo-Tabelle – hinteractive02

0

Verwenden UPDATE mit JOIN und ein CASE Ausdruck.

Abfrage

UPDATE empinfo t1 
JOIN empdata t2 
ON t1.empid = t2.FileNumber 
SET t1.isUnderage = (
    CASE WHEN t2.Age < 17 THEN 0 ELSE 1 END 
); 
Verwandte Themen