yo,
erklär doch bitte mal genauer, wie genau du auf diesen schluß kommst.
die begründung liegt letzlich in der gruppierung. dort werden spalten mit gleichen inhalt zusammengefaßt (gruppiert). so können zum beispiel 5 datensätze alle den gleichen spalteninhalt in der gruppierung haben, und werden somit zusammengefasst, sprich aus 5 datensätzen wird einer als ergebnis zurück gegeben. wenn du nun noch andere als die gruppierungs-spalten mit ausgeben willst, dann können diese werte (in gegensatz zu den gruppiernugs-spalten) sich in den 5 datensätzen unterscheiden. da er aber nur datensatz zurück gibt, weiß das dbms nicht, welchen der unterscheidlichen werte es nun nehmen soll. deswegen gibt es eine regel, die andere dbms auch richtig umsetzen und fehlermeldungen schmeissen, dass du nur spaletn ausgeben kannst, über die due auch gruppierst hast oder die eben bestandteil einer aggregat-funktion wie zum beispiel SUM() sind.
das das datenbank-design schlecht ist weiss ich, das habe ich vor jahren ohne großes grundwissen entworfen gehabt und soll dummerweise heute noch herhalten.
fragt sich, was mehr mühe macht, es mal zu ändern oder beizubehalten. irgendwann muss man sich vom alten dingen trennen können. leider hat man nicht immer diese entscheidung in der hand.
die tabellendefinitionen habe ich mal untenstehend reinkopiert.
was die daten angeht, wäre das hier zu umfangreich.
viel wichtiger als die "nackten" ddl befehle anzugeben wäre es, zu erklären, was du machen willst, welche tabellen davon betroffen sind und beispieldaten anzugeben. damit meine ich nicht alle daten, sondern eben nur ein paar beispiel, was vorhanden ist nud was dabei rauskommen soll.
Ilja