Ergebnis 1 bis 2 von 2

Thema: Doppelte Einträge finden, wobei sich Spalten verschieben können.

  1. #1
    MarioMan ist offline Neuer Benutzer
    Registriert seit
    28.07.2011
    Beiträge
    1

    Standard Doppelte Einträge finden, wobei sich Spalten verschieben können.

    Hallo,

    hier mal ein Beispiel einer Tabelle als Basis um mein Problem darzustellen.

    zB. eine Person-Table mit id, firstname und lastname jeweils als Spalte. In Wirklichkeit ist das ganze natürlich wesentlich komplexer. Aber fürs Beispiel reicht das mal.

    Einfache doppelte Einträge herausfinden ist kein Thema. Meine Problematik geht dahin, dass firstname und lastname auch vertauscht werden können. Dh. eine Zeile mit firstname = 'Hugo', lastname = 'Boss' und eine weitere Zeile mit firstname = 'Boss', lastname = 'Hugo' sollte als doppelter Eintrag erkannt werden und beide Ids sollen ausgegeben werden. Wenn möglich noch in einer Zeile.

    Also das mit einer Zeile bekomme ich ja noch hin.

    Code:
    SELECT p.lastname, array_to_string(array_accum(DISTINCT p.id), ',') as ids 
    FROM person p
    GROUP BY p.lastname
    HAVING COUNT(DISTINCT p.id) > 1
    Das gibt zB. folgendes aus:

    Aabo 23919,123521
    Aakervik 41987,144557
    Aalam Samimi 56949,133541,133542,133543,133544
    Aalberg 21866,145776
    Aalto 56398,155089
    Aamdal 1001,85368,85369,85370,85371,85372,85373,85374,853 75,85376,85377,85378,85379,85380,85381,85382

    Wobei ich normalerweise den lastname weglasse. Hier haben zB. alle mit der rechts stehenden Id den selben lastname.

    Im Grouping gebe ich dann immer an, ob eben nur nach lastname "quasi" verglichen wird oder auch noch andere Spalten, wie zB. firstname herangezogen wird.

    Jetzt fehlt mir aber irrgendwie der Ansatz, um eben die Spalten zu verschieben, tauschen, kombinieren, was auch immer und zuvor beschriebene Datensätze auch als mehrfach zu erkennen.

    Hoffe ich konnte meine Problematik verständlich darstellen und hoffe auch, es kann mir wer helfen.

    Vorweg mal, wenn es nicht anders geht, mach ich auch zwei Querys draus...

    Danke
    Gruß MarioMan

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von MarioMan Beitrag anzeigen
    Hallo,

    hier mal ein Beispiel einer Tabelle als Basis um mein Problem darzustellen.

    zB. eine Person-Table mit id, firstname und lastname jeweils als Spalte. In Wirklichkeit ist das ganze natürlich wesentlich komplexer. Aber fürs Beispiel reicht das mal.

    Einfache doppelte Einträge herausfinden ist kein Thema. Meine Problematik geht dahin, dass firstname und lastname auch vertauscht werden können. Dh. eine Zeile mit firstname = 'Hugo', lastname = 'Boss' und eine weitere Zeile mit firstname = 'Boss', lastname = 'Hugo' sollte als doppelter Eintrag erkannt werden und beide Ids sollen ausgegeben werden. Wenn möglich noch in einer Zeile.
    Code:
    test=# select * from p;
     id | firstname |  lastname
    ----+-----------+------------
      1 | hugo      | boss
      2 | boss      | hugo
      3 | andreas   | kretschmer
      4 | vorname   | nachname
      5 | nachname  | vorname
    (5 rows)
    
    test=# select case when firstname > lastname then firstname||lastname else lastname||firstname end, array_agg(id) from p where (case when firstname > lastname then firstname||lastname else lastname||firstname end) in (select case when firstname > lastname then firstname||lastname else lastname||firstname end from p group by 1 having count(*) > 1) group by 1;
          case       | array_agg
    -----------------+-----------
     hugoboss        | {1,2}
     vornamenachname | {4,5}
    (2 rows)
    So?


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Problem Doppelte Einträge bei Rekursion
    Von kollegah1338 im Forum SQL
    Antworten: 8
    Letzter Beitrag: 09.12.2011, 21:14
  2. doppelte Werte in Spalte finden
    Von Ciatronical im Forum SQL
    Antworten: 1
    Letzter Beitrag: 15.11.2010, 22:02
  3. Doppelte Einträge löschen
    Von ev-man im Forum Andere Datenbanken
    Antworten: 8
    Letzter Beitrag: 29.03.2010, 17:33
  4. Antworten: 9
    Letzter Beitrag: 09.10.2008, 13:03
  5. Antworten: 2
    Letzter Beitrag: 24.10.2006, 11:18

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum