Tabellen vergleichen und Einträge löschen

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von Nemesis, 28.11.2008.

  1. #1 Nemesis, 28.11.2008
    Nemesis

    Nemesis N3RD

    Dabei seit:
    28.01.2005
    Beiträge:
    2.165
    Zustimmungen:
    0
    Hi,
    ich habe eine SQL-Tabelle in er ich reservierte IPs eintrage und eine in die ich IPs einntrage, welche im Netz vorhanden sind.
    Nun versuche ich per Lösch-Abfrage die aus der Reservierungs-Tabelle zu löschen, welche in der für die vorhandenen stehen.

    Die Tabellen und benötigten Attribute sind:

    BelegteIPs(IP,Subnet)
    ReservierteIPs(IP,Subnet)

    Der Ansatz:
    PHP:
    DELETE FROM ReservierteIPs
    WHERE IP
    =(SELECT IP FROM BelegteIPs) AND Subnet=(SELECT Subnet from BelegteIPs)
    aber das akzeptiert er nicht, da mekkert er , dass ich die Tabelle aus der gelöscht werden soll angeben muss.

    Ist das SQL-Statement korrekt ?

    thx!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 grandpa, 29.11.2008
    Zuletzt bearbeitet: 29.11.2008
    grandpa

    grandpa CLOSED

    Dabei seit:
    31.08.2005
    Beiträge:
    147
    Zustimmungen:
    0
    Hi,

    so vielleicht ?:

    Code:
    DELETE FROM reservierteips RI
    where IP = (select IP from belegteips BI where RI.IP = BI.IP);
    ...nur auf IPs bezogen...!

    Gruß
     
  4. #3 saeckereier, 30.11.2008
    Zuletzt bearbeitet: 30.11.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Exists ist dein Freund und performanter sollte es auch sein.
    DELETE FROM reservertieIPs RIP WHERE EXISTS (SELECT ip FROM belegteIPs BIP where RIP.IP = BIP.IP). Aber abgesehen davon ists ein guter Vorschlag von Grandpa. Und bei der zu erwartenden Menge machts eigentlich net wirklich eins aus. Außerdem könnte ich was die Performance angeht hier eh falsch liegen :-)
     
  5. #4 Nemesis, 30.11.2008
    Nemesis

    Nemesis N3RD

    Dabei seit:
    28.01.2005
    Beiträge:
    2.165
    Zustimmungen:
    0
    hm, die performance ist hier zweitrangig, da es nicht sehr viele Datensätze sind.
    da es sich auch noch um unterschiedliche subnetze handelt wird dann die lösung, wenn ich mich nicht irre, wie folgt lauten:

    Code:
    DELETE FROM reservertieIPs RIP WHERE EXISTS (SELECT ip FROM belegteIPs BIP where RIP.IP = BIP.IP and RIP.Subnet=BIP.Subnet)
    
     
  6. #5 saeckereier, 30.11.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Sorry, hab das etwas übertrieben geschrieben. Wie immer bei SQL führen viele Wege zum Ziel aber so wie du es jetzt geschrieben hast sollte es gehen. Alternativ wäre auch Möglich WHERE IP IN (SELECT .....). Aber letztendlich tut sich das alles nicht viel.
     
  7. #6 Nemesis, 30.11.2008
    Nemesis

    Nemesis N3RD

    Dabei seit:
    28.01.2005
    Beiträge:
    2.165
    Zustimmungen:
    0
    wie bereits gesagt, viele wege führen nach rom ... mir genügt einer ;)

    ich sag mal danke !
     
  8. #7 BloodyMary, 30.11.2008
    BloodyMary

    BloodyMary Pornophon

    Dabei seit:
    15.03.2005
    Beiträge:
    615
    Zustimmungen:
    1
    Ort:
    Bayern
    öhm Handelt es sich um SQL oder um MySQL?
    Auch wenn der thread jetzt schon abgeschlossen ist interessiert mich ob nicht auch
    Code:
    DELETE FROM ReservierteIPs
    WHERE IP=BelegteIPs.IP AND Subnet=BelegteIPs.Subnet
    
    zum gewünschten ergebnis führt.
     
  9. #8 saeckereier, 30.11.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ich würde mir so 'ne komische Syntax gar nicht angewöhnen wollen, selbst wenn sie funktionieren *sollte*...
     
  10. #9 BloodyMary, 30.11.2008
    BloodyMary

    BloodyMary Pornophon

    Dabei seit:
    15.03.2005
    Beiträge:
    615
    Zustimmungen:
    1
    Ort:
    Bayern
    naja es ist kompakter als die syntax mit dem select in den klammern... ist allerdings geschmackssache...
    ich habs so gelernt...
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 Nemesis, 01.12.2008
    Zuletzt bearbeitet: 01.12.2008
    Nemesis

    Nemesis N3RD

    Dabei seit:
    28.01.2005
    Beiträge:
    2.165
    Zustimmungen:
    0
    also,
    ich habs jetzt wie folgt gelöst:
    Code:
    DELETE *
    FROM ReservierteIPs
    WHERE EXISTS
    (SELECT IpSeg3, IpSeg4 
    FROM Network, ReservierteIPs 
    WHERE ReservierteIPs.IP = Network.IpSeg4 and ReservierteIPs.IPBereich=Network.IpSeg3);
    aber ... er möchte immer alle datensätze in der tabelle reservierteIPs löschen.
    mit der Ausgabe die ich als unterabfrage habe hingegen, gibt er mir nur die die in beiden vorhanden sind an:
    Code:
    SELECT IpSeg3, IpSeg4 
    FROM Network, ReservierteIPs 
    WHERE ReservierteIPs.IP = Network.IpSeg4 and ReservierteIPs.IPBereich=Network.IpSeg3
    Wobei IpSeg3 das Subnet und IpSeg4 die Adressbits darstellt.

    so funktionierts:
    Code:
    DELETE *
    FROM ReservierteIPs
    WHERE IP IN
    (SELECT IpSeg4 
    FROM Network, ReservierteIPs 
    WHERE ReservierteIPs.IP = Network.IpSeg4 and ReservierteIPs.IPBereich=Network.IpSeg3)
    AND IPBereich IN (SELECT IpSeg3 
    FROM Network, ReservierteIPs 
    WHERE ReservierteIPs.IP = Network.IpSeg4 and ReservierteIPs.IPBereich=Network.IpSeg3);
     
  13. #11 saeckereier, 01.12.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    seltsam...
    Hab grade kein MySQL zur Hand, aber das schaue ich mir heut Abend nochmal an..
     
Thema:

Tabellen vergleichen und Einträge löschen

Die Seite wird geladen...

Tabellen vergleichen und Einträge löschen - Ähnliche Themen

  1. Artikel: Diagramme in Linux - Vier Tabellenkalkulationen im Vergleich

    Artikel: Diagramme in Linux - Vier Tabellenkalkulationen im Vergleich: Tabellenkalkulationen sind aus der Arbeitswelt kaum noch wegzudenken. Eine ihrer Stärken ist die schnelle Visualisierung tabellarischer Daten in...
  2. [PHP] Tabellen dynamisch aktualisieren/nachladen mittels AJAX

    [PHP] Tabellen dynamisch aktualisieren/nachladen mittels AJAX: Hallo! Ich arbeite derzeit an einem in PHP realisiertem Web-Projekt. Ich würde gerne mittels AJAX eine Ausgabetablle (enthält Daten einer MySQL...
  3. SQL Tabellen synchronisiere

    SQL Tabellen synchronisiere: hi, ich möchte mir eine history von datensätzen anlegen, um änderungen nachvollziehen zu können. dazu soll die tabelle mit den sich ändernden...
  4. [P]Mysql: 'CREATE'-Befehl zulassen aber nur für Tabellen

    [P]Mysql: 'CREATE'-Befehl zulassen aber nur für Tabellen: Hallo, Mein Problem ist folgendes: Ich lege ein Benutzer an, der nur Zugriff auf seine Datenbank hat. Folgende Befehle kann er nutzen und...
  5. Tabellenupdate mit Cursor

    Tabellenupdate mit Cursor: hallo zusammen, ich möchte mittels einen cursor einen Tabellenupdate machen. hab mir das Statement auch fast zusammengebaut. Mir fehlt nur...