Andreas Klatt: mysql: kein USING moeglich bei DELETE FROM?

Moin,

ich versuche krampfhaft, in mein DELETE FROM statement 'USING' zu verwenden.
Ich habe eine Tabelle (categorie), aus der ich Zeilen entfernen moechte. Zur Ermittlung der zu loeschenden Zeile benoetige ich Informationen aus anderen Tabellen (nomcat, domaine). Im Internet habe ich widerspruechliche Informationen darueber gefunden, ob das moeglich ist oder nicht. Bei mir funktioniert es jedenfalls nicht:

DELETE FROM categorie USING nomcat, domaine WHERE banner_ID = '1' AND categorie.nomcat_ID = nomcat.ID AND nomcat.domaine_ID = categorie.domaine.ID AND domaine.domaine = 'irgendwas.com'

Gibt es noch eine andere Moeglichkeit, oder wird USING einfach nicht unterstuezt?
Vielen Dank fuer jegliche Hilfe,

Andreas.

  1. ich versuche krampfhaft, in mein DELETE FROM statement 'USING' zu verwenden.

    Laut http://www.mysql.com/doc/en/DELETE.html sollte das - korrekte syntax vorausgesetzt - problemlos möglich sein.

    AND nomcat.domaine_ID = categorie.domaine.ID

    ^ Tippfehler?

    1. Vielen Dank; ein Tippfehler hatte sich tatsaechlich eingeschlichen, der war aber leider nicht die Ursache des Problems.
      Der Einfachheit halber habe ich den SQL-Ausdruck gekuerzt:

      DELETE FROM categorie USING nomcat, domaine WHERE banner_ID = '1';

      Leider ohne Erfolg.
      Das Manual hatte ich auch gesehen und bin daher davon ausgegangen, das USING moeglich sein muesste. Was mich ein wenig stutzig macht ist, dass dort zwischen table_name und table-references unterschieden wird. Im Endeffekt handelt es sich bei beidem aber um den Name der Tabelle, oder?

      ich versuche krampfhaft, in mein DELETE FROM statement 'USING' zu verwenden.

      Laut http://www.mysql.com/doc/en/DELETE.html sollte das - korrekte syntax vorausgesetzt - problemlos möglich sein.

      AND nomcat.domaine_ID = categorie.domaine.ID
                                                  ^ Tippfehler?

      1. Hallo,

        Leider ohne Erfolg.
        Das Manual hatte ich auch gesehen und bin daher davon ausgegangen, das USING moeglich sein muesste. Was mich ein wenig stutzig macht ist, dass dort zwischen table_name und table-references unterschieden wird. Im Endeffekt handelt es sich bei beidem aber um den Name der Tabelle, oder?

        1. Es handelt sich um den Namen der Tabelle (was anderes macht keinen Sinn).
        2. Welche Fehlermeldung bekommst Du (wir einfach nix gelöscht oder kommt da schon eine Meldung)? Wenn Du mit dem mysql-Kommandozeilenclient arbeitest, dann solltest Du jeglich Fehlermeldung sehen; wenn Du PHP oder PERL o.ä. benutzt, dann solltest Du die Fehlermeldung veruchen auszugeben, sofern sie existiert (PHP: echo mysql_error (); - PERL weiß ich leider nicht)

        Grüße,

        Christian

        1. Wenn ich in phpMyAdmin die Zeile

          DELETE FROM categorie USING nomcat, domaine WHERE banner_ID = '1'

          eingebe, bekomme ich die Fehlermeldung:

          MySQL a répondu:

          Something is wrong in your syntax près de 'USING nomcat, domaine WHERE banner_ID

          mhm, was mich auch wundert ist, dass in den letzten vier Jahren in diesem Forum niemand anderes das Problem gehabt zu haben scheint. Hast du USING in dem Kontext schon mal erfolgreich verwendet?
          danke + viele Gruesse,

          Andreas.

          Hallo,

          Leider ohne Erfolg.
          Das Manual hatte ich auch gesehen und bin daher davon ausgegangen, das USING moeglich sein muesste. Was mich ein wenig stutzig macht ist, dass dort zwischen table_name und table-references unterschieden wird. Im Endeffekt handelt es sich bei beidem aber um den Name der Tabelle, oder?

          1. Es handelt sich um den Namen der Tabelle (was anderes macht keinen Sinn).
          2. Welche Fehlermeldung bekommst Du (wir einfach nix gelöscht oder kommt da schon eine Meldung)? Wenn Du mit dem mysql-Kommandozeilenclient arbeitest, dann solltest Du jeglich Fehlermeldung sehen; wenn Du PHP oder PERL o.ä. benutzt, dann solltest Du die Fehlermeldung veruchen auszugeben, sofern sie existiert (PHP: echo mysql_error (); - PERL weiß ich leider nicht)

          Grüße,

          Christian

          1. Hi Christian,

            DELETE FROM categorie USING nomcat, domaine WHERE banner_ID = '1'
            Something is wrong in your syntax près de 'USING nomcat, domaine WHERE banner_ID

            "The first multi-table delete format is supported starting from MySQL
            4.0.0. The second multi-table delete format is supported starting from
            MySQL 4.0.2."
               (http://www.mysql.com/doc/en/DELETE.html)

            Ist das, was Du da machen willst, multi-table-delete?
            Wenn ja - welche mySQL-Version verwendest Du? (4.0.3 ist noch beta)

            Viele Grüße
                  Michael