[MySQL 4.1] Delte mit Bedingungen aus anderen Tabellen ?!?

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

  • [MySQL 4.1] Delte mit Bedingungen aus anderen Tabellen ?!?

    Hi !

    Ich habe zwei Tabellen:

    Tabelle 1 mit den Spalten
    user_id, int, Primary Key
    name, varchar
    unix_timestamp, int

    Tabelle 2 mit den Spalten
    tabelle_id, int, primary key
    id <-- referentiell identisch mit user_id von Tabelle 1
    spalte 1, int
    spalte 2, varchar

    Nun möchte ich aus aus der Tabelle 2 alle Datensätze löschen, bei denen der Unix_timestamp älter als 2 Monate ist ...

    Die Abfrage dazu sieht wie folgt aus:


    Code:
    SELECT * FROM tabelle 2 
    INNER JOIN tabelle 1 on (tabelle2.id = tabelle2.user_id) 
    WHERE unixtimestamp < aktueller timestamp
    Wie ich das nun aber in eine Deleteanweisung packe, um nur die Datensätze aus Tabelle 2 zu löschen OHNE die Datensätze aus Tabelle 1 zu gefährden würde ich euch gerne fragen ;-)

    Danke euch !
    Yeah !

  • #2
    schau dir doch einfach mal die syntax beim multi-delete an, so schwer scheints doch nicht zu sein?

    Code:
    DELETE table2
    FROM table1 t1, table2 t2
    WHERE t2.id = t1.user_id AND unixtimestamp < aktueller timestamp
    oder
    Code:
    DELETE FROM table2
    USING table1 t1, table2 t2
    WHERE t2.id = t1.user_id AND unixtimestamp < aktueller timestamp
    anmerkung: ich habe noch nie die multi-delete-syntax benötigt ... ich habe jetzt einfach mal aus 'meinem' manual adaptiert. dort wird noch nicht mit join (sondern mit where) gearbeitet, es sollte aber so gehen - denke ich.

    erschaff dir doch eine test-tabelle ...

    edit: *g* .. habe mal den join wieder entfernt ...
    Zuletzt geändert von derHund; 01.05.2005, 23:00.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Was für ein manual ist das ?
      ÜBerall dort, wo ich nachgeschlagen habe, waren die Ausführungen zu multi-delete sehr verwirrend ... *G*
      Yeah !

      Kommentar


      • #4
        Was für ein manual ist das ?
        das klein von o'reillys (mit dem eisvogel) ...
        ÜBerall dort, wo ich nachgeschlagen habe, waren die Ausführungen zu multi-delete sehr verwirrend ... *G*
        ich habe eben mal im offiz. manual geschaut ... dort stehts ähnlich ...
        For the first syntax, only matching rows from the tables listed before the FROM clause are deleted. For the second syntax, only matching rows from the tables listed in the FROM clause (before the USING clause) are deleted. The effect is that you can delete rows from many tables at the same time and also have additional tables that are used for searching:
        http://dev.mysql.com/doc/mysql/en/delete.html

        du kannst sogar jede art von join verwenden (warum auch nicht).

        hats denn nun geklappt?
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar

        Lädt...
        X