Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[SQL allgemein] [SQL] Vergleichen von Tabellen und aussortieren [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[SQL allgemein] [SQL] Vergleichen von Tabellen und aussortieren


 
Laire
19-06-2005, 23:40 
 
Hallo,

ich bin schon die ganze Zeit am überlegen wie ich das mache:

Ich habe in Datenbank A, die Tabelle 1, und in der Spalte c steht eine Info, die Tabelle hat z.B. 10 Datensätze.

Ich möchte jetzt alle Datensätze löschen, deren Wert aus Spalte c nicht irgendwo in der Datenbank B, in Tabelle 2, Spalte b vorkommt.

Ich habe da irgendwie ne Brett vorm Kopf....

 
Abraxax
19-06-2005, 23:45 
 
wo ist das problem. du liest die zu prüfenden werte aus und bindest sie in einer query für die zweite DB ein.

dass du mehrere connects zu verschiedenen DBs (auch db-hosts) machen kannst, weisst du ja, wenn du mysql_connect() brav im manual nachgelesen hast.

 
Laire
20-06-2005, 11:46 
 
Also, nachdem ich mir bei der MySQL Dokumentation diesen Artikel:

http://dev.mysql.com/doc/mysql/de/mysql-connect.html

durchgelesen habe, der eigentlich nur noch auf diesen Artikel verweist:

http://dev.mysql.com/doc/mysql/de/mysql-real-connect.html

habe ich trotzdem nichts gefunden, wie ich das mache, das ich auf zwei verschiedenen Datenbanken gleichzeitig zu greifen kann.

 
thommyk
20-06-2005, 15:29 
 
//werte aus Datenbank A, die Tabelle 1, Spalte c auslesen

$query = "SELECT DISTINCT c FROM a.Tabelle1";
//query ausführen
//zeilen in array $Values speichern

Werte aus Datenbank B, Tabelle 2 löschen wo Wert nicht in Spalte b
$query = "DELETE FROM b.Tabelle2 WHERE b NOT IN ('".implode("','", $Values)."')";
//Abfrage ausführen

Allerdings ist das NOT IN performance-technisch schlecht, weil kein index benutzt werden kann.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:19 Uhr.