phpbar.de logo

Mailinglisten-Archive

Frage: Ersatz =?iso-8859-1?q?f=FCr?= Subselects

Frage: Ersatz für Subselects

mysql_(at)_lists.phpcenter.de mysql_(at)_lists.phpcenter.de
Tue, 07 Aug 2001 12:53:20 GMT


Hallo Liste,

Mein Problem: 
Ich migriere eine bestehende Anwendung nach mySQL und 
stosse an die Grenzen der ANSI SQL Unterstützung.

Ich habe 2 Tabellen a und b

create table a ( name char(50) );
create table b ( aname char(50), id int );

Diese sind miteinander verknüpft: aname ist ForeignKey in b zu a
Meine Anwendung ist eigentlich so ausgelegt, dass diese Tabellen via 
constrains
miteinander verknüpft sind. Unter DB2 oder Oracle funktioniert folgendes
prima: 

Beim Löschen eines Datensatze aus a werden die abhängigen Datensätze aus b 
mitgelöscht,
da ich ON DELETE CASCADE als Aktion definiert hatte.

Da mySQL keine referentiellen Aktionen unterstützt, muss ich einen Job 
schreiben, 
der alle Datensätze aus b löscht, für die kein entsprechender Datensatz in 
a
mehr vorhanden ist.
Da ich die Anwendung nicht ändern will und darf (sie tut ja ...), soll 
dieser Job 
nebenläufig, z.B. zeitgesteuert laufen.

Eigentlich würde ich jetzt statements benutzen wie 
delete from b where aname not in (select name from a)

Aber mySQL unterstützt (meines Wissens, oder irre ich mich ? ) keine 
subselects.
Hat jemand eine Idee, wie das ganze performant gelöst werden kann?

Oder geht wirklich nur der langsame Weg im Programm: 

Schleife über alle Records von b:
 Für jeden Record per Select prüfen, ob in a vorhanden
 Wenn Nein: Einzeln löschen
 next record

Hat jemand eine Idee ???

Ich bin dankbar für jede Anregung.

Rüdiger

---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive