[NEWSboard IBMi Forum]
  1. #1
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364

    doppelte Sätze löschen mit SQL

    Hatte gehofft, dass deises Thema hier schon oft behandelt worden ist, habe aber nichts gefunden:

    Kann man mit SQL doppelte Sätze aus einer datei löschen?

    Die Entscheidung, ob der Satz doppelt vorhanden ist, soll dabei anhand eines bestimmten Feldes getroffen werden, nicht anhand des kompletten Satzinhaltes.

    Mit Select sieht das so aus:

    SELECT feldname, count(*) FROM datei GROUP BY feldname HAVING count(*) = 2

    -> als Ergebnis bekomme ich jetzt alle doppelten Sätze (Feldinhalt von feldname ist gleich).

    Ich möchte jetzt, dass bei diesen jeweils einer gelöscht wird.

    Geht das mit SQL?

    Danke
    HS

  2. #2
    Registriert seit
    May 2002
    Beiträge
    1.121
    gab des doch schon mal hier
    drück mich

    Habe ich aber nur über GOOGLE gefunden. über die suche hier, hat er es mir auch nicht ausgespuckt

    tschau ronald

  3. #3
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364
    Hallo ronald,

    komische Suchfunkton. Im Beitrag stand eindeutig "doppelt" !

    Habs mal durchgelesen, der löst mein Problem aber nur zum Teil:

    Ich kann mir damit zwar die doppelten Sätze anzeigen lassen, jedoch suchte ich ja nach einer Möglichkeit, doppelte zu löschen!

    Jemand eine Idee?

    Danke
    HS

  4. #4
    Registriert seit
    May 2002
    Beiträge
    1.121
    dann versuche es mal hier mit
    PHP-Code:
    delete   from malz/artprgr a                  
     where  1 
    <                                   
                (
    select count(*)                  
                   
    from malz/artprgr b            
                  where a
    .netto  b.netto        
                    
    and a.brutto b.brutto       
                    
    and a.mwst   b.mwst  )      
       and 
    rrn(a) >                               
                (
    select min(rrn(a))               
                   
    from malz/artprgr b            
                  where a
    .netto  b.netto        
                    
    and a.brutto b.brutto       
                    
    and a.mwst   b.mwst  
    Im SQL bleibt der Satz mit der kleinsten Relativen Satznummer übrig.

    tschau ronald

    ps: ist ein sql was ich schon eingesetzt habe.

  5. #5
    Registriert seit
    Oct 2001
    Beiträge
    68
    Hallo,

    Antwort: Unter der Voraussetzung, dass die „doppelten„ Datensätze völlig identische Informationen enthalten, also nicht nur die Schlüsselfelder identisch sind, läßt sich die Aufgabe mit SQL schnell lösen. Angenommen, die zu bearbeitende Datei heißt DOPPELDAT. Dann erledigen ganze vier SQL-Anweisungen die Arbeit. Als Erstes erstellen Sie ein Dateiduplikat ohne Datensätze

    Create Table DATDUP Like DOPPELDAT

    Dann füllen Sie die Duplikatdatei mit den Datensätzen, wobei das SQL-Schlüsselwort DISTINCT doppelte Sätze ausläßt:

    Insert Into DATDUP (Select Distinct * From DOPPELDAT)

    Nun löschen Sie den Inhalt der Ursprungsdatei:

    Delete From DOPPELDAT

    und kopieren zu guter Letzt die Dateien der Arbeitsdatei zurück in die Originaldatei:

    Insert Into DOPPELDAT (Select * From DATDUP)

    Als letztes löschen Sie die Arbeitsdatei, falls Sie sie nicht mehr benötigen. Das können Sie dann per DLTF erledigen (sonst wären es ja 5 SQL-Anweisungen geworden ;-)

    Auszug aus NewsWatch 04/2002...

    Gruß Ralph

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Problem hatten wir schon mal:
    http://www.rlpforen.de/showthread.php?t=5984

    Dort hats funktioniert !
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    hs is offline [professional_User]
    Registriert seit
    Jun 2001
    Beiträge
    364
    Vielen Dank für die Tips.

    Habe es mit dem SQL-Befehl von ronald hinbekommen.

    Gruß
    HS

  8. #8
    Registriert seit
    May 2002
    Beiträge
    1.121
    naja,
    habe das SQL in ähnlicher form auch bloß hier im forum gefunden

    gruß ronald

Similar Threads

  1. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  2. SQL: DISTINCT und RRN?
    By Akku in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 10-05-06, 08:07
  3. SQl Sätze hinzufügen
    By Herbie in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 30-11-04, 10:46
  4. doppelte Sätze finden = > SQL
    By heynem in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 05-12-02, 08:59
  5. doppelte Sätze in PF finden und löschen
    By Schnichels in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-11-01, 12:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •