# Tabellen vergleichen



## medicus41 (26. November 2002)

HI,

wie gehe ich am Besten bei folgendem vor: Ich habe 2 Tabellen mit
identischen Spalten. Nun möchte ich die Einträge in Tabelle2 löschen,
welche nicht in Tabelle1 vorhanden sind.

Bsp:
Tabelle1
name minuten
Hans     80
Fritz       200
Tom       30

Tabelle2
name minuten
Hans    80
Fritz      200
Tom     30
Max      100

Nun ist in Tabelle2  "Max" enthalten, aber nicht in Tabelle1. Daher
soll dieser Datensatz gelöscht werden.


----------



## Joghurtbecher (26. November 2002)

Tach !

Ich würde ja mal einfach behaupten, daß du das LEFT JOIN realisieren könntest:
select t2.name, t2.min from tabelle2 t2 left join tabelle1 t1 using (name) where t1.name is null
So kannst du mal eben den Datensatz selektieren ... !
Aber wie man das dann löscht ??  Würde mich auch interessieren.
Du brauchst dann ja nur ne neue Anweisung schreiben, bei welcher du in Abhängigkeit des Ergebnisses deiner ersten Anfrage du die Datensätze löscht !
Umständlich aber möglich mit MySQL !
Sonst sollte doch eigentlich eine verschachtelte Anweisung gehen.
Oder ich hab mal wieder in DBS nicht aufgepaßt !  

Hoffe, es hilft.
...Martin


----------



## medicus41 (27. November 2002)

Hi,

mit deiner Abfrage hab ich die Datensätze rausgefiltert und anschließend durch eine neue Abfrage gelöscht.



```
$check ="SELECT schedule_flights_temp.flightnr from schedule_flights_temp LEFT JOIN
         schedule_flights ON schedule_flights_temp.flightnr =schedule_flights.flightnr 
		 where schedule_flights.flightnr is NULL";
		 $go = mysql_query($check, $conn);
         while($r = mysql_fetch_array($go,MYSQL_ASSOC)){
         mysql_query("DELETE from schedule_flights_temp where flightnr = '".$r['flightnr']."'");
		 }
```


----------

