DELETE bla FROM bla, bla2 ..

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

  • DELETE bla FROM bla, bla2 ..

    Folgendes Problem:

    mysql> DELETE files FROM files,users WHERE files.path=users.homedir;
    ERROR 1064: You have an error in your SQL syntax near 'files FROM files,users WHERE files.path=users.homedir' at line 1

    Es soll aus der Tabelle files gelöscht werden, wenn es eine Übereinstimmung zwischen files.path und users.homedir gibt.

    Laut der MySQL Dokumentation sollte das möglich sein:
    http://www.mysql.com/doc/de/DELETE.html

    Ich bin in diesem Fall rein auf SQL angewiesen, es muss in einem Query funktionieren, also kein PHP.

    Hoffe mal ihr könnt mir da helfen.
    MFG

  • #2
    aus dem manual
    Das Multi-Tabellen-Löschformat wird ab MySQL 4.0.0 unterstützt.
    welche version hast du?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Danke, leider nur die 3.23.52 .. da wird wohl ein Update nötig sein :/

      Kommentar


      • #4
        wieso jetzt update?

        mache sein SELECT über beide tabellen. dann kannst du dir jeweils die ids auslesen und zwischenspeichern. dann kannst du je ein DELETE machen pro tabelle mit den ids in WHERE
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Wie gesagt, es muss in einem Query funktionieren, da es nicht von PHP aus geht und ich in diesem Fall nicht mit Variablen arbeiten kann.

          Kommentar


          • #6
            mhm. dann gehts wohl nicht...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Hehe, mysql upgedated, hat einwandfrei funktioniert.

              Your MySQL connection id is 12 to server version: 4.0.9-gamma-log

              Nun würde dies auch gehen.

              Wue würde ich denn bspw so etwas machen?:

              DELETE files FROM files, users WHERE files.path=users.homedir'//time.php' OR files.path=users.homedir'/time.php';
              ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''//time.php' OR files.path=users.homedir'/time.php'' at line 1

              MfG

              Kommentar


              • #8
                Frage hat sich erledigt..

                DELETE files FROM files, users WHERE files.path=CONCAT(users.homedir,'//time.php') OR files.path=CONCAT(users.homedir,'/time.php');
                manchmal sag ich mir selbst RTFM!! ;p

                Kommentar


                • #9
                  Ich würde hierbei gerne LIMIT 1 verwenden, doch leider funktioniert das nicht, gibt es eine möglichkeit, um das selbe zu erreichen?

                  mysql> DELETE files FROM files, users WHERE files.path=CONCAT(users.homedir,'/test','/','time.php') OR files.path=CONCAT(users.homedir,'/test','time.php') LIMIT 1;
                  ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1

                  Es geht darum, das proftpd-mysql bei einem DELE kommando die Datei aus der files Tabelle löscht.
                  nur, wenn es einen Ordner /test und eine darin enthaltene Datei time.php gibt und eine datei /testtime.php gibt, würden beide gelöscht werden :/

                  MfG

                  Kommentar


                  • #10
                    Hi,

                    das mit dem Limit im Multi-Table-Delete wird nicht klappen.

                    Leider wird es in der deutschen Doku nicht erwähnt - hier ein Auszug aus der englischen.

                    --- schanipp :: http://dev.mysql.com/doc/mysql/en/delete.html
                    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.
                    However, you cannot use ORDER BY or LIMIT in a multiple-table DELETE.
                    --- schanüpp

                    ....
                    so long - p

                    Kommentar


                    • #11
                      dass das thema schon ZWEI! jahre alt war, hast du nicht gesehen?
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        rofl, schon schwer n datum zu lesen ^^...
                        naja immerhin wollte er/sie helfen
                        MfG
                        aim
                        Lies mich jetzt!
                        - OT-Tags-Liebhaber und BB-Code-Einrücker -

                        Kommentar


                        • #13
                          wenn hier noch ein post erscheint, close ich den thread!
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar

                          Lädt...
                          X