Zwei tabellen gleichzeitig leeren

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

  • Zwei tabellen gleichzeitig leeren

    Hallo,

    ich möchte zwei Tabellen mit einer sql-Anweisung leeren, abhängig von Bedingungen, wobei eine bedingung nur in einer tabelle auftritt.
    Schon jetzt vielen Dank für eine Hilfe.

    Derzeit mache ich es so, bzw. will es so machen und bekomme immer den Fehler "[Not unique table/alias: 't']".
    PHP-Code:
        $killed $wpdb->query("DELETE t.*,
                                   c.*
                              FROM 
    $wpdb_tb_data As t,
                                   
    $wpdb_comments AS c 
                             WHERE t.tb_comments_ID = c.comment_ID
                               AND c.comment_approved = 'spam'
                           "
    ); 

  • #2
    Wenn du phpMyAdmin hast, geh auf die Oberfläche und klick die zu löschenden Tabellen an und der Code, der oben erzeugt wird, den kannst du per klick (rechts am bildschirmrand) in PHP Code ausgeben lassen.

    Oder du gibst mal die Struktur deiner Datenbank hier wieder.
    Höre nie auf zu versuchen. Versuche nicht aufzuhören.

    Kommentar


    • #3
      Das hat nix mit der Struktur der DB zu tun.


      Bist du sicher, dass es diese Query ist und dass die Query so vollständig ist? Er meckert darüber, dass t kein eindeutiger Tabellenname ist. Hast du vielleicht ne Tabelle die sonst so heißt?
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        nein, habe ich nicht.
        Lösche ich beiden Tabellen eizeln, also so:
        PHP-Code:
            $killed $wpdb->query("DELETE
                                      FROM 
        $wpdb_tb_data,
                                     WHERE tb_type = 'spam'
                                   "
        );

                
        $killed $wpdb->query("DELETE
                                          FROM 
        $wpdb_comments
                                         WHERE comment_approved = 'spam'
                                       "
        ); 
        geht es ja.
        Ich wollte es nur gern in eine Anweisung haben.

        Und den vergleich zwischen beiden tabellen, wenn die id gleich ist:
        PHP-Code:
        t.tb_comments_ID c.comment_ID 
        ich möchte also alle Einträge in den zwei Tabellen comments und tb_comments löschen, wenn ID von tb_commnets = ID von comments und auch wenn comment_approved in comments = 'spam'

        Liebe Grüsse

        Kommentar


        • #5
          Kurze Antwort: Das geht nicht.

          Lange Antwort: Guck dir doch mal die Syntax an. Aber wozu denn auch das ganze? Damit du eine Zeile im Quelltext sparst? Versteh ich nich, was bringt dir das denn?

          Ich bin mir ansonsten jedenfalls sehr sicher, dass es nicht geht, du kannst ja auchnich mit einem Befehl 2 Datenbanken anlegen oderso.
          Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

          Kommentar


          • #6
            OffTopic:
            bin mir jetzt nicht sicher ob du´s warst @arsen ..
            Aber hat dich nicht jemand gebeten besser KEIN Kommentar als Falsche kommentare abzugeben?



            Code:
            DELETE tabelle1.*, tabelle2.* FROM tabelle1 a, tabelle2 b
            WHERE a.Id = b.Id
            AND a.Id = 'spam'
            Das ist schon so richtig. Mach dir mal eine Variable für den SQL Befehl und lass den vor dem query ausgeben. Irgendwo is da bestimmt nen Typo drin oder so.

            EDIT:

            @Arsen .. Wenn du schon aufs Manual verweist, dann les es vorher auch

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

            In diesem Fall werden übereinstimmende Zeilen nur aus den Tabellen t1 und t2 gelöscht.

            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Ups sorry.. *ganz klein mach* *zu entschuldigen versuch* Ich hab die ganze Nacht gearbeitet und habs irgendwie überlesen im Manual. Tut mir Leid. *Hoff das Vergebung krieg*
              Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

              Kommentar

              Lädt...
              X