DELETEs kombinieren

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

  • DELETEs kombinieren

    Hallo!

    Ausgangslage: Ich habe 2 Tabellen:

    Tabelle "Obstsorten"
    Code:
    ObstID, Obstname, Ablaufdatum
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1, Apfel, 12.12.2006
    2, Birne, 01.01.2007
    3, Banane, 02.10.2008
    4, Kirsche, 08.08.2005
    Tabelle "Obstvarianten"
    Code:
    VarianteID, ObstID, Farbe
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1, 1, grün
    2, 1, rot
    3, 1, gelb
    4, 1, gelb-rot
    5, 2, gelb
    6, 2, gelb-grün
    7, 3, gelb
    8, 3, braun
    ...
    Nun möchte ich aus der Tabelle Obstsorten alle Obstsorten löschen, die abgelaufen sind:
    Code:
    DELETE FROM obstsorten WHERE ablauf < NOW()
    Gleichzeitig möchte ich aber auch aus der Tabelle Obstvarianten alle Einträge zu den abgelaufenen Obstsorten löschen. Wie kann ich das kombinieren? Man könnte natürlich
    Code:
    SELECT ObstID FROM Obstsorten WHERE ablauf < NOW()
    und dann mit mysql_fetch_row() alle Resultate durchgehen, indem man dann zu jedem Resultat einmal "DELETE FROM Obstvarianten WHERE ..." und einmal "DELETE FROM Obstsorten WHERE ..." macht, aber das ist bei größeren Datenmengen sicherlich ziemlich ineffizient. Gibt's da eine Möglichkeit, das direkt mit der SQL Abfrage erledigen zu lassen? Ich hoffe es ist verständlich, was ich meine.

    Viele Grüße & danke schon mal!
    cargu

  • #2
    Re: DELETEs kombinieren

    du kannst auch einen SELECT machen und dann zwei IN-Queries:
    DELETE FROM tabelle WHERE id IN (1, 2, 4)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      DELETE FROM Obstvarianten WHERE ObstId IN (SELECT ObstId FROM Obstsorten WHERE ablauf < NOW());

      DELETE FROM Obstsorten WHERE ablauf < NOW();
      signed oder unsigned... das ist hier die Frage

      Kommentar


      • #4
        Danke, das funktioniert bestens!

        Kommentar

        Lädt...
        X