dagi: SQl ORACLE abfrage

Hallo,
ich habe ein Problem und zwar wie bekomme ich aus folgenden Quellcode hin das die Member ID in der Abfrage sprich in den Ergebniss aus der Abfrage nur EINMAL vorkommt. Bis jetzt ist es der Fall das wenn eine ID zwei EMAILS hat sie auch zweimal vorkommt.

Dachte das ich da Filter das nur einmal die ID in der liste steht

SELECT DISTINCT KONTAKT_ID, MEMBER_ID, KONTAKTTYP_id, content, private_01, priority, beschreibung
FROM CONTACT
WHERE contact_type_id = 5
and priority = 1
ORDER BY member_id

Bitte um hilfe

  1. Hi,

    ich habe ein Problem und zwar wie bekomme ich aus folgenden Quellcode hin das die Member ID in der Abfrage sprich in den Ergebniss aus der Abfrage nur EINMAL vorkommt. Bis jetzt ist es der Fall das wenn eine ID zwei EMAILS hat sie auch zweimal vorkommt.

    welche der beiden E-Mails soll denn ausgewählt werden?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. welche der beiden E-Mails soll denn ausgewählt werden?

      Cheatah

      »»

      bevorzugt die dienstliche also die mit private_01 = 0
      und priority 1
      ist aber keine dienstliche vorhanden dann die private
      die mit private_01 =1 und priority = 1

      hab mir gedacht anhand er Member_id zu filtern das die nur einmal vorkommt.

      1. yo,

        bevorzugt die dienstliche also die mit private_01 = 0
        und priority 1
        ist aber keine dienstliche vorhanden dann die private
        die mit private_01 =1 und priority = 1

        das kann aber nur klappen, wenn jeweils auch nur eintrag (privat oder dienstlich pro person)in der tabelle kontakt vorhanden ist. ist dies den sichergestellt ?

        Ilja

        1. das kann aber nur klappen, wenn jeweils auch nur eintrag (privat oder dienstlich pro person)in der tabelle kontakt vorhanden ist. ist dies den sichergestellt ?

          Ilja

          bei select reicht mittlerweile  SELECT  content, MEMBER_ID

          und ja es ist wenn alles klappt nur ein eintrag vorhanden
          im moment ist bei manchen ein dienstlicher udn ein privater vorhanden.
          da meine abfrage noch nicht funktioniert.

          Deswegen habe ich ja hier geschrieben

          hier nochmal der select befehl in verkürzter form

          SELECT  mail, MEMBER_ID
          FROM kontakt
          WHERE kontakt_type_id = 5
          and priority = 1
          ORDER BY member_id;

  2. with min_private as (
          select min(c4.private_01)
            from contact c4
           where c4.member_id=53
             and c4.contact_type_id=5
        group by c4.member_id
    )
    select content, MEMBER_ID
      from contact c
     where c.contact_id in (select c2.contact_id
                              from contact c2
                             where c2.member_id=53
                               and c2.contact_type_id=5
                               and c2.priority in (select min(c3.priority)
                                                     from contact c3
                                                    where c3.member_id=53
                                                      and c3.contact_type_id=5
                                                      and c3.private_01 in (select * from min_private)
                                                 group by c3.member_id)
                               and c2.private_01 in (select * from min_private))
       and c.contact_type_id=5

    Hab jetzt mit dieser abfrage das problem naja nicht gelöst aber einen weg gefunden.

    Kann mir jetzt da einer weiterhelfen? wie kann ich aus der abfrage eine abfrage erstellen, bei der ich nicht die memberid fest vorgebe. in dem fall die 53

    1. yo,

      Kann mir jetzt da einer weiterhelfen? wie kann ich aus der abfrage eine abfrage erstellen, bei der ich nicht die memberid fest vorgebe. in dem fall die 53

      der lösungsweg sollte eine korrelierte unterabfrage in der WHERE klausel sein, die prüft, ob der bevorzugte Wert vorhanden ist kombiniert mit einer CASE Anweisung, die entscheidet, ob der Datensatz nun genommen wird oder nicht.

      Mögliche fälle:

      1. Der aktuelle Datensatz besitzt den bevorzugten Wert, dann nimm den Datensatz.

      2. der aktuelle Datensatz besitzt nicht den bevorzugten Wert, und es gibt für diese Person in keinen anderen Datensatz diesen bevorzugten  Wert, dann nimm diesen Datensatz.

      3. der aktuelle Datensatz besitzt nicht den bevorzugten Wert, und es gibt für diese Person in einen anderen Datensatz diesen bevorzugten Wert, dann nimm diesen Datensatz nicht.

      Ilja