JOINs in Update oder Delete-Abfragen?

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

  • JOINs in Update oder Delete-Abfragen?

    Hi,

    Ich habe schon im mysql-manual vergeblich nach einer Lösungsmöglichkeit gesucht.

    Ich muss nämlich 2 Tabellen vergleichen und in einer eine Delete, bzw Update-Abfrage durchführen. Bei mir (MySQL 3.x) funktioniert eine Update/Delete-Abfrage leider nciht in Kombination mit einer JOIN Anweisung...
    Muss ich nun die Update-Funktion in einer Schleife durch alle gefundenen SELECT-Resultate ausführen, oder gibts dafür eine einfachere Methode. Es müssen nämlich häufig viele Datensätze geändert/gelöscht werden und dafür auch viele Zeilen überprüft werden, wodurch der Server bei der Schleifenmethode stark belastet wäre.


  • #2
    wieso machst du das in einer schleife? für beide tabellen?

    schaue dir mal IN() an.

    WHERE id IN(1,2,3,n)
    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
      Erm, entschuldigung, dass ich diesen veralteten Thread wieder ausgrabe. Aber ich hab dieses Projekt kurzzeitig auf Eis gelegt.

      Nun zum Problem:
      Ich habe eine Tabelle "user" mit der Spalte "lastonline"

      Desweiteren eine Tabelle "forumviews". Spalten: "userid", "zeit"


      In "forumviews" wird gespeichert, welche Forumthreads ein User alle schon gesehen hat. Threads bei der die "lastpostzeit" kleiner ist, als die lastonline-Spalte der User-Table, werden standardmäßig als gelesen interpretiert. Um die forumviews-Table klein zu halten, wollte ich alle unnötigen Zeilen immer wieder löschen.
      d.h.: es sollen alle Zeilen aus der forumviews-Table gelöscht werden, wobei die "zeit" kleiner als die "lastonline"-Zeit des jeweiligen Users mit der "userid".
      Was ich mit der Schleife gemeint hatte war, dass erst die ganze User-Table durchgegangen werden muss, um dann die Einträge in "forumviews" mit der "lastonline" des users zu vergleichen und folglich zu löschen.

      Es ist schon spät, ich hoffe, dass ich trotzdem noch einigermaßen verständlich schreibe.

      Kommentar

      Lädt...
      X