Antonia: DISTINCT Abfrage funkt. einfach nicht.

Folgende Tabelle:

Ich möchte die Vornamen erhalten, die NICHT Status 2 haben. Das ist nur Thomas und Heide.

Vorname | Status
------------------
Peter   |1
Peter   |2
Thomas  |1
Thomas  |3
Thomas  |3
Heide   |1
Andreas |3
Andreas |2

Als Ergebnis soll "Thomas" "Heide" kommen.

Meine Idee ist im Grundgedanken eigentlich:
SELECT distinct(Vorname),Status FROM tabelle WHERE Status !=2 ORDER BY Vorname
Ergebnis ist dann Peter Thomas Thomas Thomas Heide usw...

Kann jemand helfen? Wo ist der Fehler?

  1. Hi there,

    Kann jemand helfen? Wo ist der Fehler?

    Distinct bezieht sich auf beide Felder. Wenn Du jeden Vornamen nur einmal brauchst, das Statusfeld aber mitausgeben möchstest, (warum eigentlich, das macht ja nicht wirklich Sinn, weil es dann eben nur ein Wert von mehreren möglichen wäre, wenn Deine Abfrage so funktionierte), dann musst Du die Tabelle am besten mit sich selbst verknüpfen, wobei die "erste" Tabelle eben nur das distinct vorname (oder "distinct (vorname)")  als Feld enthält...

  2. Hi,

    Ich möchte die Vornamen erhalten, die NICHT Status 2 haben. Das ist nur Thomas und Heide.

    Hmm,
    du wirst hier eine Subquery benötigen. Soetwas wie

      
    SELECT Vorname -- gib mir alle Vornamen  
    FROM tabelle   -- aus tabelle,  
    WHERE          -- für die  
      NOT EXISTS   -- kein Eintrag in tabelle existiert, welcher Status 2 hat.  
       (  
         SELECT *  
         FROM tabelle t2  
         WHERE t2.Vorname = tabelle.Vorname  
           AND status = 2  
       )  
    
    

    Das sieht deshalb so komisch aus, weil hier Vorname nach soetwas wie ein Primary Key aussieht, aber dann doch mehrfach vorkommen kann.

    Bis die Tage,
    Matti

  3. hi,

    Ich möchte die Vornamen erhalten, die NICHT Status 2 haben. Das ist nur Thomas und Heide.

    Vorname | Status

    Peter   |1
    Peter   |2
    Thomas  |1
    Thomas  |3
    Thomas  |3
    Heide   |1
    Andreas |3
    Andreas |2

    Als Ergebnis soll "Thomas" "Heide" kommen.

    ... group by Vorname;

    Hotti