Löschen Wenn in anderen Tabellen kein Eintrag mit gleicher Id vorhanden ist

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

  • Löschen Wenn in anderen Tabellen kein Eintrag mit gleicher Id vorhanden ist

    Hallo,

    ich habe folgendes Problem: Drei Tabellen die über das Attribut KKId verknüpft sind. In der Tabllen kundenkonfig wird das Objekt mit der Id KKId beschrieben. Damit diese Tabelle nicht zumüllt, möchte ich aus ihr alle Zeilen löschen, deren KKId weder in der einen noch der anderen Tabelle (warenkorb und bestellung) vorkommt.

    Geht das überhaupt in einem SQL-Statement oder muss ich mir das mit Hilfe mehrer Abfragen in PHP zusammenstückeln also erstmal alle IDs holen und dann vergleichen und wenn nix gefunden wird in einen Array usw...

    Oder gibt's da was elegantes in der Richtung

    DELETE FROM kundenkonfig WHERE KKId !== SELECT KKId FROM warenkorb, bestellung
    (Völliger Unsinn, aber ihr versteht vielleicht, was ich meine)

    Gruß,

  • #2
    Ich würde mal sagen …

    Multi-Table DELETE … und LEFT JOIN … mit IS NULL

    http://dev.mysql.com/doc/refman/5.0/en/delete.html

    Prizipiell sollte auch ein Subquery mit NOT EXISTS funktionieren …
    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


    • #3
      Könnte auch helfen: NOT IN

      Kommentar


      • #4
        Original geschrieben von ZombieChe
        Könnte auch helfen: NOT IN
        Super! Das funzt:
        PHP-Code:
        DELETE FROM kundenkonfig WHERE KKId NOT IN (SELECT KKId FROM warenkorb) AND KKId NOT IN (SELECT KKId FROM bestellung

        Kommentar

        Lädt...
        X