Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Duplikate von Wertepaaren filtern

Dieses Thema im Forum "Oracle" wurde erstellt von etnobommel1989, 5 Dezember 2013.

  1. etnobommel1989

    etnobommel1989 Benutzer

    Hallo,
    ich hoffe ich bin hier richtig. Ich hab ma ne Frage, wahrscheinlich ist es für manche recht einfach aber ich steh einfach aufm Schlauch.
    Und zwar

    Tabellenbeispiel

    Spalte 1 Spalte 2
    1 2
    2 1 -> herausfiltern (selber Wert wie in Zeile 1)
    2 3
    3 1
    1 3 -> herausfiltern (selber Wert wie in Zeile 4)
    3 2 -> herausfiltern (selber Wert wie in Zeile 3)

    also am Ende soll nur noch dies übrig bleiben:
    Spalte 1 Spalte 2
    1 2
    2 3
    3 1

    Es wäre wunderbar wenn mir jm. die SQL Anfrage dazu erklären könnte. Mit distinct funzt es ja nicht da die Zeilen verglichen werden ob sie identisch sind.

    Danke schon mal im Voraus
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Du hast da in Spalte 1 mal einen größeren und mal einen kleineren Wert stehen, im Vergleich zur Spalte 2. Das wird schwer, zumindest solange ich die Regel dahinter nicht erkennt. Davon abgesehen:

    Code:
    privat=*# select * from etno ;
     a | b
    ---+---
     1 | 2
     2 | 1
     2 | 3
     3 | 1
     1 | 3
     3 | 2
    (6 rows)
    
    Time: 0,168 ms
    privat=*# select distinct least(a,b), greatest(a,b) from etno ;
     least | greatest
    -------+----------
      1 |  3
      1 |  2
      2 |  3
    (3 rows)
    
    Time: 0,214 ms
    privat=*# select distinct greatest(a,b), least(a,b) from etno ;
     greatest | least
    ----------+-------
      3 |  1
      2 |  1
      3 |  2
    (3 rows)
    
    Andreas, mit PostgreSQL gemacht, Oraggle kann das sicher genauso.
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich glaube gemeint ist eher sowas hier:

    Code:
    SELECT    DISTINCT t1.a,t1.b
    FROM    tabelle t1
    WHERE    NOT EXISTS (    SELECT    1
                            FROM    tabelle t2
                            WHERE    t2.a = t1.b
                            AND        t2.b = t1.a )
     
  4. etnobommel1989

    etnobommel1989 Benutzer

    Hey vielen Dank aber ich meinte das eher so,
    Also ich habe eine Abfrage erstellt:

    Code:
    SELECT t1.name,t2.name
    FROM tabelle t1, tabelle t2
    WHERE t1.vorgesetzter_id =  t2.vorgesetzter_id
    AND t1.mitarbeiter_id  !=  t2.mitarbeiter_id;
    
    Somit bekomme ich alle möglichen Kombinationen von Mitarbeitern die den gleichen Vorgesetzten, haben bis auf die Kombination eines Mitarbeiter mit sich selbst.

    Meine Frage ist nun wie kann ich diese Abfrage weiter basteln damit keine symmetrischen Paare ausgegeben werden,d.h wenn (A1,B1) ausgegeben wird soll nicht noch das zugehörige(B1,A1) ausgegeben werden. Ich hoffe ich habe es jetzt verständlich erklärt.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Meine Abfrage macht dies doch, oder?
     
  6. ukulele

    ukulele Datenbank-Guru

    Meine eigentlich auch. Wenn man weitere Bedingungen hat (wie in dem Beispiel oben sollte man vieleicht der übersicht halber erst eine Sicht erstellen. Geht aber auch in einem Code...
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden