Hallo,
vielleicht kann mir jemand helfen.
ich habe eine DB mit der ich eine Rangliste rechne. Das funktioniert auch gut.
query
doch nun ergibt sich in der neuen Saison ein Problem welches ich im Moment gedanklich nicht lösen kann.
Wie hier zu sehen ist werden aus allen Werten nur die besten 9 (best gewertet. Doch sollte ein Teilnehmer mehr als die 9 Wettkämpfe bestritten haben, so erhält er einen Bonus von 10 Punkten pro gestrichenem Rennen. Auch gibt es immer wieder ein Problem, wenn die letzten beiden Werte == sind, dann werden beide gestrichen. Wie kann ich das im Query berücksichtigen, oder sollte ich es besser komplett mit php machen?
Für Hinweise wäre ich dankbar.
vielleicht kann mir jemand helfen.
ich habe eine DB mit der ich eine Rangliste rechne. Das funktioniert auch gut.
query
Code:
INSERT INTO `2017`
(
`Name`,
`verein`,
`klasse`,
`id_nummer`,
`punkte`,
`ak_punkte`
)
SELECT
`Name`,
`verein`,
`klasse`,
`teilnehmer_id`,
sum(punkte) AS best8,
sum(ak_punkte) AS bestak
FROM cupwertung
JOIN `rennen`
ON rennen.id = cupwertung.rennen
WHERE cup= 1
AND
(
SELECT count(*)
FROM cupwertung AS t
WHERE cup='1'
AND t.`teilnehmer_id` = cupwertung.`teilnehmer_id`
AND t.punkte >= cupwertung.punkte) <=9
AND
(
SELECT count(*)
FROM cupwertung AS t
WHERE cup='1'
AND t.`teilnehmer_id`=cupwertung.`teilnehmer_id`
AND t.ak_punkte >= cupwertung.ak_punkte) <=9
AND `date`BETWEEN '2017-01-01' AND `date` <= '2017-12-01'
GROUP BY `Name`
ORDER BY best8 DESC
Wie hier zu sehen ist werden aus allen Werten nur die besten 9 (best gewertet. Doch sollte ein Teilnehmer mehr als die 9 Wettkämpfe bestritten haben, so erhält er einen Bonus von 10 Punkten pro gestrichenem Rennen. Auch gibt es immer wieder ein Problem, wenn die letzten beiden Werte == sind, dann werden beide gestrichen. Wie kann ich das im Query berücksichtigen, oder sollte ich es besser komplett mit php machen?
Für Hinweise wäre ich dankbar.
Kommentar