moin,
das schwierigste bei den meisten SQL fragen hier ist weniger die abfrage selbst, sondern das verstehen, was voliegt und was das ergebnis sein soll. und ich muss sagen, deine beschreibungen sind für einen alten mann wie mich verwirrend, was aber auch an mir liegen kann.
hmm, dann zeige mir doch mal in deiner abfrage, wo der wert für die Parameterbewertung steht und wo der wert für Kategoriebewertung.
Parameterbewertung findet im ersten SUM() statt.
Die Kategorienbewertung ist der gesamte Teil: SUM(objekt.punkte / parameter.maximalpunkte * parameter.gewichtung) / SUM(parameter.gewichtung) * kategorie.gewichtung
die SUM() werte bilden ja in deinem fall keine eigene spalten, sondern sind teil einer spalte, nämlich der Kategorienbewertung, wenn ich dich jetzt richtig verstanden habe. und wenn du in deinem ausgangsposting die punkte aufzählst, was die abfrage leisten soll, dann finde ich keine Parameterbewertung in der ausgabe, sondern nur die Kategoriebewertung. hinzu kommt, dass sich die "virtuelle" Parameterbewertung nicht pro parameter bezieht, sondern eben nach der kategorie gruppiert wird.
wie kann den ein objekt mehrere parameter haben, wenn der fremdschüssel der parametertabelle in der tabelle der objekte steht. so modelliert kann ein objekt nur einen parameter haben, bzw ein parameter kann mehrere objekte haben.
Nehmen wir an, Objekt 1 hat 3 Parameter:
objekt: #idobjekt #parameter_idparameter punkte
1 1 10
1 2 11
1 3 9Ein Objekt hat viele Parameter, ein Paramater kann viele Objekte haben. Objekt-ID und Parameter-ID sind beides Schlüssel, also eine n-zu-m-Beziehung.
auch hier wäre es besser gleich zu erwähnen, dass es sich also nur um die beziehungstabelle, und nicht um die objekttabelle, handelt. kann man vielleicht drauf kommen, aber mir war das nicht gleich klar. insofern kann man getrost auch dir normalisierung aussen vor lassen (die ich sowieso für überholt finde), es scheint ja alles in bester ordnung zu sein. irgendwo existiert dann eben noch die objekt tabelle und du hast uns schon die beziehungstabelle (n:m) gegeben. dann ist es auch verständlich, das ein objekt mehrere parametere haben kann und umgekert.
jetzt aber genug gemeckert, schließlich geht es ja um eine lösung. wenn du punkt 2) und punkt 3) in einer abfrage abbilden willst, dann muss dir klar sein, dass du die werte für punkt 3) eventuell mehrfach angezeigt werden, nämlich immer dann, wenn zwei unterschiedliche kategorien zu dem selben katalog gehören. das liegt daran, dass du über die kategorie gruppierst, weil du ja auch eine ausgabe für jede unterschiedliche bezüglich 2) haben willst. du kannst nicht über die katalod id gruppierung, weil du sich dann unterschiedliche kategorien dahinter verbegen können. sprich du musst die zweite form der gruppierung in einer unterabfrage einbauen. aber vorher sollte man noch klären, was du genau brauchst, ist mir leider immer noch nicht bewußt, vor allem was die Parameterbewertung betrifft und wie die gebildet wird. am besten wären wohl beispieldaten mit einer ausführlichen erklärung.
Ilja