# 2 Tabellen vergleichen



## Dr_Google (7. Juli 2005)

Hallo at all,

ich habe folgendes problem.

Ich habe eine Tabelle "Mitarbeiter" mit fogenden Felder:
->Bezeichnung z.B G080
->Anrede Herr
-> Titel 
-> Vorname Alexandra
->Nachname Müller
->Vertragsende 22.01.2006
-> Vertragsanfang 22.01.2005
-> Personalnummer 845454

Ich habe die gleiche Tabelle "Mitarbeitertest" mit den gleichen Felder ein zweites mal in der Datenbank aber diesmal mit aktuelleren Daten. 

Nun meine Frage:

Wenn in der Tabelle "Mitarbeitertest" Mitarbeiter ausgeschieden sind so müssen diese datensätze in meinem Produktivtabelle "Mitarbeiter" auch entfernt werden.

Gibt es da ein sql befehl mit dem das nachprüfen kann?



```
DELETE t2.* FROM mitarbeiter 
t1 RIGHT JOIN mitarbeitertest t2 ON t1.check2 = t2.check2
 WHERE t1.check2 IS NULL
```
Das funktioniert leider nicht


----------



## andi_g69 (7. Juli 2005)

Wenn es SQL Server ist (kann es sein, dass Du den 3ten Post zu diesen Daten hast und immer noch nicht angibst, welches DBMS Du benutzt?) dann ist die Syntax so:
DELETE mitarbeiter 
FROM mitarbeiter t1 
RIGHT JOIN mitarbeitertest t2 ON t1.check2 = t2.check2
 WHERE t1.check2 IS NULL


----------



## Dr_Google (8. Juli 2005)

mysql Datenbank 1.4.13 mit PHP 

MySQL meldet: Dokumentation
#1109 - Unknown table 'mitarbeiter' in MULTI DELETE 
----------------------------------------------------------------------------------------

ich habe die richtige select abfrage um die datensätze aufzulisten die gelöscht werden sollen nämlich diese hier

```
SELECT * FROM mitarbeiter t1 WHERE NOT EXISTS ( SELECT * FROM mitarbeitertest t2 WHERE t2.check2 = t1.check2 )
```

Wenn ich aber jetzt das SELECT gegen ein DELETE austausche kommt diese Meldung

```
DELETE * FROM mitarbeiter t1 WHERE NOT EXISTS ( SELECT * FROM mitarbeitertest t2 WHERE t2.check2 = t1.check2 )
```

MySQL meldet: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM mitarbeiter t1 WHERE NOT EXISTS ( SELECT * FROM mitarbeitertest t2 WHERE ' at line 1

Ich habe keine ahnung woran das liegen könnte

Gruss
Google


----------



## Nico Graichen (8. Juli 2005)

Hi, lass mal das * weg 

Also:

```
DELETE FROM ...
```


----------



## Dr_Google (8. Juli 2005)

niggo hat gesagt.:
			
		

> Hi, lass mal das * weg


...dann kommt dieser Fehler. Leider 


MySQL meldet: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS ( SELECT  FROM mitarbeitertest t2 WHERE t2.check2 = t1.check2 )' at line 1 

Gruss
google


----------



## Nico Graichen (8. Juli 2005)

:-S

In dem Subselect solltest du das Sternchen schon drin lassen, oder wenigstens eine Feld angeben. 
Nicht so übereifrig


----------

