löschen in 2 Tabellen gleizeitig!

jensef

Grünschnabel
Hallo Leute,

habe heute eine Anleitung gefunden wie man in 2 Tabellen gleichzeitig unter bestimmten Bedingungen löschen kann.

DELETE t1,t2 FROM t1,t2,t3 WHERE t1.test_id=t2.test_id AND t2.test_id=t3.test_id
In diesem Fall werden übereinstimmende Zeilen nur aus den Tabellen t1 und t2 gelöscht.

nun stellst sich die Frage wie es geht und ob es geht wenn in der T1 die Test-Id ein Primärschlüssel ist aber in T2 nicht.

Hat da einer einen Schimmer.
Habe eine Möglichkeit schaffen müssen wo in einer Tabelle die Testüberschrift und die Hilfe zum test drinstehen anhand einer Test_id(Prim.)
Habe aber noch eine 2 Tabelle wo die Fragen zum jeweiligen Test drinstehen.Die stehen mit einer lfdnr(prim) in der Tabelle.Die Daten werden aber anhand der Test_id identifiziert und so wird auch der Test im Netz abgespult.
Nun wollen die eine Möglichkeit zum löschen der Fragen und der Tests.
Fragen separat löschen ist ja kein Thema.Die Tests separat auch nicht.Aber es macht ja aber wohl keinen Sinn wenn ich noch Fragen drinhabe die an eine Test_id gebunden ist die man aber gelöscht hat.Bei 10 Tests a 10 Fragen macht das 100 Fragen für die Katz in der DB.
Also will ich nun die Tests löschen und die dazugehörigen Fragen die dem Test zugeordnet sind.
Also dachte ich mach mal folgendes:
PHP:
$result = mysql_query("Delete *,* from tests,testdetails where tests.TEST_ID  = '$loesch_id' and testdetails.TEST_ID='$loesch_id'");

Die Löschid kommt aus einer Textbox wo man auswählen kann welchen Test man löschen will.

Hilfe!
Danke!
 
Hast Du schon mal überlegt Fremdschlüssel mit ON DELETE CASCADE zu deklarieren? Ich kenne zwar Dein Problem nicht genau aber vielleicht kann man es ja über Fremdschlüssel lösen.
 
Was mir gerade noch einfällt : Die Fremdschlüssel funktionieren erst ab mySQL 4.0 also bitte beachten falls Du mySQL verwendest. Darüber hinaus musst Du Deine Tabellen anders deklarieren, ich glaube sie heißen dann INNO_DB oder so das erkennst Du aber wenn Du es siehst.
 
Zurück