Hallo Daniel,
Gib mir alle werte von verweis_id1 in denen in spalte der wert = alpha
ist. gibt es einen weiteren datensatz mit identischer verweis_id1 und in
spalte dem wert=beta dann gib mir die verweis_id1 doch nicht.
Nochmals:
Deiner Beschreibung hier fehlt die wichtige Bedingung, dass die Spalte "spalte" nur die Werte "alpha" und "beta" annehmen kann.
Weiterhin:
Ich kann mir nicht vorstellen, dass Deine Tabelle "tabelle" heißt. Das ist ein schlechter Tabellenname. Genauso sind meiner Meinung nach "verweis_id1", "verweis_id2" und "spalte" gute Spaltennamen.
Bitte gib' bei Deinen Anfragen die richtigen Namen an, mir fällt es damit leichter umzugehen. Für die folgende Lösung ist es unbedingt erforderlich, dass die Werte _exakt_ "alpha" und "beta" heißen, bzw. zumindest, dass Dein Wert, der _nicht_ vorkommen soll, größer ist als der andere.
Deswegen:
Bei nur zwei Werten gib bitte exakt Deine Werte an, nicht irgendwelche beliebigen Werte. Damit kann man zuwenig anfangen.
Nach dieser Predigt die Lösung für oben stehendes Problem:
"beta" darf nicht bei den gesuchten verweis_id1 vorkommen.
Da der Wert in der Spalte "spalte" nicht NULL sein darf, muss der Wert bei allen Vorkommen der gleichen verweis_id1 "alpha" sein.
Daraus folgt, dass für die gesuchten Einträge das Maximum aller Werte zu einer bestimmten verweis_id1 "alpha" sein muss.
Da in Deinem Suchkriterium eine Aggregatsfunktion (MAX()) vorkommt, musst Du nach der Spalte "verweis_id1" gruppieren. Aggregatsfunktionen dürfen im Normalfall _nicht_ in der WHERE-Klausel auftreten, Du musst also zum Einschränken Deiner Datensätze die HAVING-Klausel verwenden.
Somit ergibt sich folgendes Statement:
SELECT
verweis_id1
FROM
tabelle
GROUP BY verweis_id1
HAVING
MAX(spalte) = 'alpha'
Bitte beachte, dass die HAVING-Klausel erst nach der GROUP-BY-Klausel kommt, während eine (hier nicht vorhandene) WHERE-Klausel vor der GROUP-BY-Klausel einzuordnen ist, siehe MySQL-Handbuch.
Freundliche Grüße
Vinzenz
PS: Wäre bitte jemand, der sein Passwort zum Bugtracker nicht verlegt hat, so nett, im Bugtracker einzutragen, dass bei SQL-Statements das Schlüsselwort HAVING nicht als solches erkannt wird (zumindest in der Vorschau).