Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Doppelte Tupel finden?

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236

    Doppelte Tupel finden?

    Ähh, steh da gerade a wengerl auf m Schlauch, ich hab ne Tabelle, die in etwa so aussieht:
    Code:
    .______.______.______.
    | col1 | col2 | col3 |
    |------+------+------|
    | abc  |    1 |    2 |<
    | abc  |    1 |    3 |<
    | xyz  |    2 |    2 |
    | abc  |    4 |    0 |
    | xyz  |    1 |    1 |
    | abc  |    6 |    3 |<
    | abc  |    6 |    3 |<
    '------'------'------'
    Mein Problem sind die Zeilen in denen `col1` und `col2` zusammen nicht unique sind in der Tabelle (so wie die die ich oben mit "<" markiert hab). Die hätte ich gerne...
    Mein Ansatz wäre etwas wie
    Code:
    SELECT col1,
           col2
    FROM tbl t1
    WHERE (SELECT t2.col1
           FROM tbl t2
           WHERE t2.col1 = t1.col1 AND
                 t2.col2 = t1.col2
           MINUS
           SELECT DISTINCT t3.col1
           FROM tbl t3
           WHERE t3.col1 = t1.col1 AND
                 t3.col2 = t1.col2) IS NOT NULL;
    aber leider scheint das DISTINCT das MINUS nicht dran zu hindern alles abzuziehen wo es passt, egal wie oft es vorkommt im zweiten.
    Leider hat die Tabelle keinen Primary Key sonst ginge ja noch was wie
    Code:
    SELECT col1,
           col2
    FROM tbl t1
    WHERE t1.col1 IN (SELECT t2.col1
           FROM tbl t2
           WHERE t2.col1 = t1.col1 AND
                 t2.col2 = t1.col2 AND
                 t2.pkey <> t1.pkey);
    Ach ja alles unter Oracle, hat da wer ne Idee?
    Geändert von sticky bit (16-04-2004 um 13:47 Uhr)
    chmod -R +t /*

  2. #2
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Code:
    SELECT COL2, COL3, COUNT(*)
    FROM TBL
    GROUP BY COL2, COL3
    HAVING COUNT(*) > 1
    In der Hoffnung das deine Datenbank die Having Clausel versteht, sollte dir das Beispiel alle Tupel raussuchen, welche doppelt oder öfters vorhanden sind.

    Der Code ist aber zwischen Tür und Angel geschrieben und nicht geprüft. Prügel mich bitte nicht, wenn es nicht auf Anhieb läuft.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236

    Thumbs up

    Original geschrieben von Hans-Georg Normann
    Code:
    SELECT COL2, COL3, COUNT(*)
    FROM TBL
    GROUP BY COL2, COL3
    HAVING COUNT(*) > 1
    Genau das wars Danke! Auf COUNT() bin ich gar nicht gekommen. Manchmal sieht man den Wald vor lauter Bäumen nicht... *slapme*
    chmod -R +t /*

Lesezeichen

Berechtigungen

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