AllesMeins: MySQL: DELETE über mehrere Tabellen

Hiho,

ich bastele an einem kleinen digitalen Sammelkartenspiel. Ich habe eine Tabelle in der die Karten eingetragen sind und in einer zweiten Tabelle zu jeder Karte mehrere Einträge mit Eigenschaften der Karte. Die Karten besitzen jeweils eine ID, die Eigenschaften sind über die ID den Karten zugeordnet. In der Kartentabelle gibt es ausserdem einen Eintrag über den Besitzer der Karte. Nun möchte ich eine grössere Menge Karten von einem Besitzer (inklusive der dazugehörigen Eigenschaften Einträge) löschen. Ist das in einem SQL Statement machbar?
Laut MySQL Manual gibt es ja eine Methode um in mehreren Tabellen zu löschen. Erschwerend kommt hinzu das das ganze auf mySQL 4.0.18 laufen müsste, sprich ich kein JOIN verwenden kann, das genau dies leisten würde. Fällt euch irgend eine Methode ein mit der dies ginge?

Grüsse

Marc

  1. Hallo,

    Laut MySQL Manual gibt es ja eine Methode um in mehreren Tabellen zu löschen.

    Ja. Das Multi-Tabellen-Löschformat wird ab MySQL 4.0.0 unterstützt.
    http://dev.mysql.com/doc/mysql/de/delete.html

    Welche Probleme hast Du damit?

    viele Grüße

    Axel

    1. hiho,

      ich hatte mein Problem ja schon beschrieben: Ich habe in einer Tabelle die Karten mit ID und Besitzer und in einer zweiten die KartenIDs und Eigenschaften dazu. Nun weiss ich nicht wie ich es schaffe aus Tabelle 1 alle Karten mit besitzer "xyz" zu löschen und dazu noch aus Tabelle 2 alle Eigenschaften die zu den Karten gehören.

      Grüsse

      Marc

      1. hi,

        ich hatte mein Problem ja schon beschrieben: [...]

        und welcher teil davon besteht weiterhin, nachdem du die verlinkte seite _durchgelesen_ hast?

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. Hallo,

        ich hatte mein Problem ja schon beschrieben: Ich habe in einer Tabelle die Karten mit ID und Besitzer und in einer zweiten die KartenIDs und Eigenschaften dazu. Nun weiss ich nicht wie ich es schaffe aus Tabelle 1 alle Karten mit besitzer "xyz" zu löschen und dazu noch aus Tabelle 2 alle Eigenschaften die zu den Karten gehören.

        In der Doku steht als Beispiel:

        DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

        Du hast t1 mit ID und Besitzer und t2 mit KartenID und Eigenschaften.

        Was macht:

        DELETE t1,t2 FROM t1,t2 WHERE t1.ID=t2.KartenID AND t1.Besitzer='xyz'

        ?

        viele Grüße

        Axel

        1. Hiho,

          das funktioniert nicht wenn in Table2 keine Eigenschaften für die entsprechende Karte stehen.

          Grüsse

          Marc