Yadgar: [MySQL 4.0] Austauschbarkeit von WHERE- und HAVING-Bedingungen

Beitrag lesen

High!

Da gibt es noch ein anderes Problem in meiner Greenbook-Datenbank:

  
select marken.Markenname, orgeln.Modell from orgeln_klaviaturen inner join orgeln on orgeln.Nr = Orgel_Nr inner join marken on orgeln.Marke = marken.Nr inner join klaviaturen on klaviaturen.Klaviatur_Nr = orgeln_klaviaturen.Klaviatur_Nr where Position>0 and Anzahl_Tasten not in (37, 44, 49, 61) group by Modell order by Markenname, Modell;  

zeigt alle Orgeln mit einem, zwei, drei oder vier Manualen an, bei denen mindestens ein Manual nicht die Standardgröße (also 37, 44, 49 oder 61 Tasten) hat. Klappt soweit ganz prima... nur würde ich die Abfrage gerne auf zweimanualige Orgeln einschränken.

Mir ist klar, dass dazu erstens der zweite Teil der WHERE-Bedingung (Anzahl_Tasten NOT IN (37, 44, 49, 61)) zunächst einmal wegfallen und zweitens nach GROUP BY Modell HAVING COUNT(*)=2 stehen muss. Danach müsste aber irgendwie die ursprünglich zweite WHERE-Bedingung wieder zum Tragen kommen - aber ich weiß nicht, wie ich sie in die HAVING-Klausel einfügen soll! Wenn ich z. B. HAVING COUNT(*) AND Anzahl_Tasten NOT IN (37, 44, 49, 61) schreibe, bekomme ich eine Fehlermeldung
"Unknown column 'Anzahl_Tasten' in 'having clause'" - wieso?

Bis bald im Khyberspace!

Yadgar