DELETE mit 2 grossen Tabellen

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

  • DELETE mit 2 grossen Tabellen

    Ich habe zwei ziemlich große Statistik-Tabellen.
    In einer wird die Statistik bei Seiten-Aufruf geschrieben, die zweite Tabelle ist die Archiv-Kopie.
    Einziger Unterschied ist, das der PrimaryKey aus Tabelle 1 (stat_id) in der Archiv-Tabelle als zweite Spalte mit der Bezeichnung stat_id geschrieben wird.

    Nun sollen aus der Tabelle1 alle Datensätze entfernt werden, die voher in die zweite Tabelle kopiert wurden.

    Der Befehl
    Code:
    DELETE FROM stats 
    WHERE stats.stats_id = stats2.stats_ori_id
    funktioniert aber nicht.
    MSQL liefert die Meldung:
    Code:
    #1109 - Unknown table 'stats2' in where clause
    zurück, obwohl sie existiert.
    Ebenso scheitert LEFT JOIN ... ON , JOIN , etc ..., z.B.
    Code:
    DELETE FROM stats JOIN stats2
    WHERE stats_id = stats_ori_id
    Kann mir jemand helfen?

  • #2
    als lektüre
    http://dev.mysql.com/doc/mysql/de/DELETE.html

    das das join nicht funktioniert könnte daran liegen, das es nicht in der syntax vorgesehen ist.

    ansonsten sieht es gut aus - sicher, dass die tabelle existiert?

    anstatt DELETE mal ein SELECT als test gemacht?

    Kommentar


    • #3
      so könnte es passen:
      Code:
      DELETE stats FROM stats, stats2  
      WHERE stats.stats_id = stats2.stats_ori_id
      ... ohne gewähr.
      Kissolino.com

      Kommentar


      • #4
        Multitable ist heute irgendwie Dein Thema ... auch hier wieder gilt: Mindestens MySQL 4.0.0 ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Sorry, dass ich mich erst heute melde.
          Habe auch noch mal die DELETE-Doku gelesen und hatte die Multitable-Sache vorher einfach überlesen.
          Der Syntax von Wurzel haut also hin, funktioniert bei mir auch lokal, aber auf dem Server wird Multitable noch nicht unterstützt.

          Zumindest kam jetzt mit richtigen Angabe der Tabellen vor und nach FROM nur noch Fehler 1064, da MySQL kleiner 4.0 das natürlich nicht wissen kann.

          Kommentar


          • #6
            plan b:
            - 1 select auf die tabellen, das alle zu löschenden ids ausliest
            - ids in ein array einlesen
            PHP-Code:
            $sql 'DELETE FROM tabelle WHERE id IN ('.implode(',',$id_array).')'
            Kissolino.com

            Kommentar


            • #7
              Bin ich auch gerade am testen. Weiss nur noch nicht, wie PHP/MySQL mit einem Array von 5000 ID's umgeht.
              Werde dazu wohl den Archiv-Intervall auf 15 Min, statt wie vorgesehen 24 h, ändern.
              Dann sollte das keine Problem machen

              Kommentar

              Lädt...
              X