DISTINCT Abfrage funkt. einfach nicht.
Antonia
- datenbank
0 Klawischnigg0 Matti Mäkitalo0 hotti
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?
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...
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
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 |2Als Ergebnis soll "Thomas" "Heide" kommen.
... group by Vorname;
Hotti