Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySql Mehrfach DELETE

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JackdasRipperl
    hat ein Thema erstellt [Erledigt] MySql Mehrfach DELETE.

    [Erledigt] MySql Mehrfach DELETE

    Guten tag zusammen,

    ich habe grade erst mit PHP angefangen und habe folgendes Problem:
    PHP-Code:
    if ((int)$_GET['buch_id']>0) {
    $buch_id = (int)$_GET['buch_id'];

    $sql 'delete from buch_autor where buch_id = "'.$buch_id.'" LIMIT = 1';
    $sql 'delete from autor a where (select count(*) from buch_autor b where a.autor_id = b.autor_id)) = 0 LIMIT = 1';
    $sql 'delete from buch_schlagwort where buch_id = "'.$buch_id.'" LIMIT = 1';
    $sql 'delete from schlagwort a where (select count(*) from buch_schlagwort b where a.schlagwort_id = b.schlagwort_id)) = 0 LIMIT = 1';    
    $sql 'delete from bestand where buch_id = "'.$buch_id.'" LIMIT = 1';
    }else {
    echo 
    "ERROR (keine Buch ID vorhanden) bitte klicken Sie auf home!"
    Die ganzen $sql Statements will ich ausführen und das nacheinander.
    (möglichst zusammenhängend)
    Im oberen Teil hole ich mir die Buch_id, das geht auch. (habs mir mal mit echo ausgeben lassen).

    Ich hab nix gefunden wie das gehen soll.....
    In mysqli gibts ein multi_query aber das kann ich nicht verwenden weil ich eine MySQL Datenbank brauch.(die bekomm ich vorgegeben)

    Sollte es sowas in der Art schon geben entschuldige ich mich (hab nix gefunden).

    im Vorraus:
    Vielen Dank für die Hilfe

  • Gast-Avatar
    Ein Gast antwortete
    Im MySQL 5.1 Referenzhandbuch steht dazu:

    Sie können in einer DELETE-Anweisung mehrere Tabellen angeben, aus denen je nach Bedingung der WHERE-Klausel Datensätze
    gelöscht werden. Allerdings können Sie ORDER BY oder LIMIT nicht in einer DELETE-Anweisung für mehrere Tabellen
    SQL-Anweisungssyntax verwenden. Die Klausel table_references listet die Tabellen auf, die im Join berücksichtigt werden. Die Syntax ist in Abschnitt 13.2.7.1, ..JOIN“, beschrieben.
    Bei der ersten Mehrtabellensyntax werden nur passende Datensätze aus den Tabellen gelöscht, die vor der FROM-Klausel
    aufgelistet sind. Bei der zweiten Mehrtabellensyntax werden nur passende Datensätze aus den Tabellen gelöscht, die in der FROM Klausel
    (vor der USING-Klausel) aufgelistet sind. Die Folge ist, dass Sie Datensätze aus vielen Tabellen gleichzeitig löschen und
    gleichzeitig in weiteren Tabellen nur suchen lassen können:

    Code:
    DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
    Grüße
    Thomas

    Einen Kommentar schreiben:


  • JackdasRipperl
    antwortet
    Ahh ok.
    Danke für die Hilfe.

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Dann kannst du die Querys nicht in einer einzigen Abfrage ausführen. Einfach für jeden Query mysql_query() aufrufen und gut ist. Sollten die Aufgaben unbedingt zusammen ausgeführt werden müssen und bei Fehler eines der Querys wieder "zurückgeführt" werden dann solltest du dich mal nach Transaktionen umschauen.

    Einen Kommentar schreiben:

Lädt...
X