Kniffliges Sortierproblem

Kniffliges Sortierproblem

am 26.06.2006 11:39:05 von Roland Zitzke

Hi,
ich suche eine möglichst elegante Lösung für folgendes Problem (Dialekt ist
MySQL)
Es gibt zwei Tabellen:
Familien {
nachname : char[32]
}
und
teilnehmer {
nachname : char[32]
punkte : integer
}
Die Tabellen sind über "nachname" miteinander verbunden.
Zu einer Familie können 1 bis n Teilnehmer gehören.
Jeder Teilnehmer kann einen unabhängigen Punktestand (punkte) aufweisen.
Gesucht ist eine Abfrage, die Familien (nachname) sortiert nach der Summe
ihrer besten drei Teilnehmer zusammen mit der Punktesumme der drei
bestplatzierten Mitglieder ausgibt.
Anders gesagt: Sortierkriterium ist die summe derjenigen maximal drei
Teilnehmer einer Familie, die die meisten Punkte haben und gesucht ist die
Platzierungsreihenfolge der Familien zusammen mit eben dieser Punktesumme
der besten drei.

Es dankt und grüßt Roland

Re: Kniffliges Sortierproblem

am 26.06.2006 11:50:58 von Christian Kirsch

Roland Zitzke schrieb:
> Hi,
> ich suche eine möglichst elegante Lösung für folgendes Problem (Dialekt ist
> MySQL)
> Es gibt zwei Tabellen:
> Familien {
> nachname : char[32]
> }
> und
> teilnehmer {
> nachname : char[32]
> punkte : integer
> }
> Die Tabellen sind über "nachname" miteinander verbunden.

Gut, wenn man nur einen "Müller" und einen "Maier" in den Tabellen
hat. Sonst ist das eine merkwürdige Idee. Bzw. passt das gar nicht zu
Deiner eigentlichen Frage:

> Zu einer Familie können 1 bis n Teilnehmer gehören.
> Jeder Teilnehmer kann einen unabhängigen Punktestand (punkte) aufweisen.
> Gesucht ist eine Abfrage, die Familien (nachname) sortiert nach der Summe
> ihrer besten drei Teilnehmer zusammen mit der Punktesumme der drei
> bestplatzierten Mitglieder ausgibt.

Wenn Deine Tabellen *wirklich* so aussehen, dann hast Du doch gar
keine Möglichkeit, einzelne Teilnehmer zu identifizieren.

Re: Kniffliges Sortierproblem

am 26.06.2006 12:18:08 von Roland Zitzke

>> MySQL)
>> Es gibt zwei Tabellen:
>> Familien {
>> nachname : char[32]
>> }
>> und
>> teilnehmer {
>> nachname : char[32]
Startnr : char[32]
>> punkte : integer
>> }
>> Die Tabellen sind über "nachname" miteinander verbunden.
>
> Gut, wenn man nur einen "Müller" und einen "Maier" in den Tabellen
> hat. Sonst ist das eine merkwürdige Idee. Bzw. passt das gar nicht zu
> Deiner eigentlichen Frage:
Sorry, Teilnehmer haben natürlich auch noch weitere Daten incl. einer
eindeutigen Startnummer - da habe ich zuviel vereinfacht / weggelassen.
Ntürlich muß man Teilnehmer identifizieren können und natürlich gibt es auch
bei den Familien eine Zuordnungsnummer die das "zwei Meyer-Problem"
eindeutig löst.
Mir geht es um den Ansatz, wie man das Ranking am geschicktesten angeht.

/Roland

Re: Kniffliges Sortierproblem

am 30.06.2006 12:31:09 von Christian Kirsch

Roland Zitzke schrieb:
>>> MySQL)
>>> Es gibt zwei Tabellen:
>>> Familien {
>>> nachname : char[32]
>>> }
>>> und
>>> teilnehmer {
>>> nachname : char[32]
> Startnr : char[32]
>>> punkte : integer
>>> }
>>> Die Tabellen sind über "nachname" miteinander verbunden.
>> Gut, wenn man nur einen "Müller" und einen "Maier" in den Tabellen
>> hat. Sonst ist das eine merkwürdige Idee. Bzw. passt das gar nicht zu
>> Deiner eigentlichen Frage:
> Sorry, Teilnehmer haben natürlich auch noch weitere Daten incl. einer
> eindeutigen Startnummer - da habe ich zuviel vereinfacht / weggelassen.
> Ntürlich muß man Teilnehmer identifizieren können und natürlich gibt es auch
> bei den Familien eine Zuordnungsnummer die das "zwei Meyer-Problem"
> eindeutig löst.
> Mir geht es um den Ansatz, wie man das Ranking am geschicktesten angeht.

Vielleicht hilft das hier:
http://deepselect.blogspot.com/2006/06/summarizing-numerous- rows.html

und ein Blick in 'GROUP BY' mit "WITH ROLL_UP"