Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

löschen aus 2 Tabellen gleichzeitig!

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:

Code:                   In Zwischenablage kopieren (nur IE)
1">

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

Hilfe!!!
Danke!
Hier gehts zum Orginal Eintrag "löschen aus 2 Tabellen gleichzeitig!" im Forum

Antworten

Du gibst nicht die Felder an, sondern die Tabellen, aus denen die Datensätze gelöscht werden sollen.
$loesch_id ist eine Zahl? Dann sind die Anführungszeichen überflüssig - mysql muss dadurch nur intern eine Umwandlung mehr vornehmen. Aber dann wurde $loesch_id hoffentlich sicher in eine Zahl umgewandelt, bevor der Parameter in die Abfrage einfließt; also z.B. per $loesch_id=(int)$loesch_id;


DELETE tests,testdetails
FROM tests,testdetails
WHERE
tests.TEST_ID=$loesch_id AND testdetails.TEST_ID=$loesch_id


2.

Hallo, habe es so probiert es geht leider nicht,
es passiert rein nichts.


3.

Aber die Zeile

if (mysql_errno()) echo mysql_error();

nach mysql_query sollte einige Informationen ausgeben.

*** Nobody ***


4.

Danke aber mehr kommt da nicht
Fehler in der Syntax bei 'tests,testdetails FROM tests,testdetails WHERE tests.TEST_ID=' in Zeile 1.


5.

Habe mit der Zeit auch mal ein bisschen weiterprobiert zum Beispiel mit IN aber das will auch nicht!
Code:                   In Zwischenablage kopieren (nur IE)
2">




6.

welche mysql-Version wird benutzt?
http://www.mysql.com/doc/en/DELETE.html
Zitat:
From MySQL 4.0, you can specify multiple tables in the DELETE statement to delete rows from one or more tables depending on a particular condition in multiple tables.



7.

Version 3.23.39

Habe mir mit der Zeit auch mal die lösch_id als echo ausgeben lassen
Code:                   In Zwischenablage kopieren (nur IE)
3">

Das seltsame ist das er mir dann als Ausgabe folgendes bringt!
36Leere Abfrage.
Die 36 ist ja richtig das ist die TEST_ID aber der Rest!?!


8.

dann kann es nicht gehen. Achte auf das From MySQL 4.0 im Text; ab der Version 4.0 ...


9.

na toll!Alles klar dann werde ich erstmal ein update machen und mal weitersehen.
Bei Bedarf melde ich mich nochmal.

Vielen Dank trotzdem für Speis und Trank, für Sitzgelegenheit und Licht!!


10.

Noch mal ich!
Nach dem Update auf Mysql >4.0 funzt es.!
und hier der Bringer!
Code:                   In Zwischenablage kopieren (nur IE)
4">

Vielen Dank!
Jens


Hier gehts zum Orginal Eintrag "löschen aus 2 Tabellen gleichzeitig!" im Forum
 
phpforum.de | Impressum | Handy Bundles