Naja, Du musst ja erstmal wissen, was Du haben/anzeigen lassen willst.
So wie ich das jetzt verstehe willst Du im 1Monat (Januar) immer die für diesen Monat erziehlten Punkte des Spielers eintragen?
also:
Rang Name Punkte ges Punkte Jan Punkte Feb ...
1. Stoner Sascha 38 11 4
Mal von der Ausgabe abgesehen brauchst Du sicherlich (im Bezug auf die Tabelle und Möglichkeiten hier: http://www.dietotenkoepfe.de/vereinsr2.php)
eine Tabelle für die Mitglieder
id | vorname | nachname | aktiv
-----------------------------
1 | hans | soundso | 1
eine Tabelle für die Bewertungen/Ränge:
id | bezeichnung | zeichen
----|--------------------------------------------------------------
1 | Null-Pudel des Monats | NP
...| Pudel des Monats | P
...| Monatspokal | M
...| Jahrespokal / Kegelkönig | J
...| Ausgeschieden | A
...| Ohne Wertung | OW
...| Ohne weitere Wertung, da oft abwesend | *
...| Krankheitsbedingter Ausfall | **
...| Weniger als 6 Monate Mitglied / ohne Bewertung | ***
...| Babypause | ****
Alles anzeigen
eine Tabelle für die Punkte
id | bezeichnung | punkte
-----------------------------------------------
1 | bester Spieler des Abends | 10 Punkte
2 | zweit bester Spieler des Abends | 8 Punkte
3 | dritt bester Spieler des Abends | 6 Punkte
4 | viert bester Spieler des Abends | 4 Punkte
5 | fünft bester Spieler des Abends | 2 Punkte
und eine Tabelle in der Du die punkte mitzählst:
id | mitglied_id | punkte | monat | jahr
-----------------------------------------------
1 | 1 | 11 | 1 | 2014
2 | 2 | 2 | 1 | 2014
3 | 3 | 5 | 1 | 2014
4 | 4 | 22 | 1 | 2014
5 | 1 | 11 | 2 | 2014
6 | 2 | 2 | 2 | 2014
7 | 3 | 5 | 2 | 2014
8 | 4 | 22 | 2 | 2014
9 | 1 | 22 | 3 | 2014
10 | 2 | 33 | 3 | 2014
11 | 3 | 44 | 3 | 2014
12 | 4 | 55 | 3 | 2014
/*
id = INT NOT NULL AUTO_INCREMENT
mitglied_id = id-reference zu tabelle `mitglieder`
monat = typ enum('1','2','3','4','5','6','7','8','9','10','11','12')
jahr = type YEAR (http://dev.mysql.com/doc/refman/5.1/de/year.html)
insert via: YEAR(NOW())
sql insert-bsp -> punkte eintrage / hinzufügen:
INSERT INTO `tbl`
SET
`mitglied_id` = 1,
`punkte` = 22, -- ein punkt eintragen
`monat` = MONTH(NOW()),
`jahr` = YEAR(NOW())
ON DUPLICATE KEY UPDATE -- wenn schon vorhanden, also mitglied schon punkte in diesem monat-jahr hatte:
punkte = punkte + 22 -- dann nimm die vorhandenen punkte und zähle die neuen dazu
;
index:
mitglied_id, monat und jahr sollten zusammen einen UNIQUE-INDEX bilden.
somit ist sichergestellt, dass es für
ein mitglied in einem bestimmten monat des jahres nur einen eintrag (zeile) geben kann.
sql:
ALTER TABLE `tbl`
ADD UNIQUE INDEX `index_name` (`mitglied_id` ASC, `monat` ASC, `jahr` ASC);
auslesen: zB punkte gesammt
SELECT
`jahr`,
`monat`,
`mitglied_id`,
SUM(`punkte`) -- summiere punkte
FROM d.p
GROUP BY `mitglied_id`,`jahr`,`monat` -- "gruppiere by"
ORDER BY `jahr`,`monat` ASC -- sortiere nach jahr, monat
*/
Alles anzeigen
EDIT:
hier mal die sql statements als bsp:
-- create table:
CREATE TABLE IF NOT EXISTS `points` (
`id` int NOT NULL AUTO_INCREMENT,
`mitglied_id` int NOT NULL,
`jahr` year(4) NOT NULL,
`monat` enum('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12') NOT NULL,
`punkte` int NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQUE_mitglid_mon_jah` (`mitglied_id` , `monat` , `jahr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- insert bsp:
INSERT INTO `points`
SET
`mitglied_id` = 2,
`punkte` = 22,
`monat` = MONTH(NOW()), -- monat = DER MONAT VON (JETZT())
`jahr` = YEAR(NOW()) -- jahr = DAS JAHR VON (JETZT())
ON DUPLICATE KEY UPDATE -- wenn schon vorhanden, dann update:
`punkte` = `punkte` + 22
;
-- select alle punkte-bsp:
SELECT
`jahr`,
`monat`,
`mitglied_id`,
SUM(`punkte`) AS `gesamt_punkte`
FROM
`points`
GROUP BY `mitglied_id` , `jahr` , `monat`
ORDER BY `jahr` , `monat` ASC;
Alles anzeigen