0

Doppelte Datensätze in einer Tabelle per Script löschen

Hallo, wie bekomme ich doppelte Einträge in einer Tabelle per Script gelöscht.

Einzelne Datensätze bekomme ich per Button mit Script gelöscht, aber wie stelle ich es an, dass er die gesamte Tabelle durchsucht und die doppelten automatisch löscht.

Vielen Dank für die Hilfe.

Wolfgang

7 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    for i in select TABELLE do

    delete select TABELLE where FELD = i.FELD and Nr!=i.Nr

    end

    —-

     

    Leo

    • Wolfgang
    • vor 4 Jahren
    • Gemeldet - anzeigen

    O.k. Danke Leo, wäre ich nie im Leben darauf gekommen, aber es funktioniert

    Wolfgang

    • Nicole_Ratzer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank, funktioniert bei mir auch! Wie kann ich denn immer nur einen der doppelten Einträge löschen? LG Nicki

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Nicki,

    Eigentlich löscht dieser Skript nur einen der doppelten Einträgen. Bei dreifachen vier usw. werden alle auser den ersten gelöscht

    Leo

    • BugTrapper
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Dieses Skript geht nur deshalb, weil delete gar kein richtiges Löschen ist. Die Lücke in den Daten wird durch das Löschen ja nicht zusammengeschoben. Die Indizes der gelöschten Datensätze sind immer da und bleiben erhalten. Nur die Datensätze werden als gelöscht markiert.

    Sonst würde obiges Skript nicht gehen und sich selbst den Teppich unter den Füßen wegziehen.

    Vermutlich werden alle Datensätze in einer verketteten Liste geführt, gelöschte Datensätze bleiben in der Kette enthalten und werden nicht gelöscht und kein Speicher freigegeben, sondern nur als gelöscht markiert. Ständiges Freigeben von Speicher wäre erstmal sehr langsam und würde auch den Speicher defragmentieren.

    • Birger_H
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die Datensätze werden tatsächlich gelöscht. Die ID eines gelöschten Datensatz' wird aber nicht neu vergeben.

    Birger

    • BugTrapper
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Kann eigentlich nicht sein. Angenommen wir haben eine Tabelle mit 5 Reihen oder Einträgen.

    Alle 5 Einträge sind identisch.

    "Select Tabelle" gibt ein Array von 0..4 zurück.

    Nun geht die Schleife los:

    1. Schleifenindex ist 0:

        es werden alle Einträge von 1..4 gelöscht

    2. Schleifenindex 1:

        Crash, der Tabelleneintrag mit Index 1 existiert nicht.

    usw.

    Sollte bei anderen Programmiersprachen einen Fehler ausgeben, Ninox macht es nicht ?!

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 7Antworten
  • 2446Ansichten