Hallo zusammen,
ich möchte mir und meiner Freundin gerne ein Trainingstagebuch bauen. Leider hab ich kaum Erfahrung in der Webentwicklung und bin grade erst in den Anfängen mich da
so ein bisschen einzuarbeiten.
Für dieses Tagebuch habe ich eine MySQL Tabelle mit folgenden Spalten:
Der 01.05.2017 ist der 1. Trainingstag von User1. Später soll es noch weitere User geben (damit habe ich mich jedoch noch nicht beschäftigt).
Angenommen es gibt mehrere User, die ca. 5 Übungen pro Trainingstag haben mit entweder 2,3 oder 4 für Sätzen.
Wenn ich trainiere möchte ich gerne a) sehen welche Eingaben (über Formulare) ich grade für eine bestimmte Übung gemacht habe und b) möchte ich mir für diese Übung, die Einträge des letzten Trainingtags anzeigen lassen. Also angenommen ich war am 01.05.2017, am 03.05.2017 und am 05.05.2017 trainieren (User2 zwischendurch auch) wie kann ich mir
a) für Übung 1 die Einträge des letzten Trainingstags anzeigen lassen (also für den 05.05.2017) ?
b) für Übung 1 die Einträge von vorletzten Trainingstag (vom 03.05.2017) ?
Aktuell lasse ich mir folgendes ausgeben:
SELECT satz, gewicht, wiederholungen, datum, id FROM tabelle order by datum desc, satz limit 6
also eine ganz einfache Ausgabe... immer die letzten 6 Einträge. Also werden bei Übungen mit 3 Sätzen immer die letzten beiden Trainingstage angezeigt.
Das brauche ich aber in Zukunft anderes weil:
- ich habe nun auch Übungen mit 2 und mit 4 Sätzen habe
- ich möchte mir die Ausgabe für den letzten Trainingstag und den vorletzten nun an verschiedenen Orten anzeigen lassen ... nicht mehr direkt hintereinander.
Ich stelle mir das so vor dass man die Einträge nach jedem Satz quasi live im Fitti in sein Handy einträgt und die Einträge in der Nähe vom Eintragsformular erscheint.
Wenn man also den 1. Satz von Übung 1 ausgeführt hat trägt man die Ergebnisse ein und sobald der Satz eingetragen und abgesendet ist soll er in der Nähe der
Eingabeformulare Ausgegeben werden.
Irgendwo anders soll aber von Anfang bis Ende der Übung der letzte Trainingstag für diese Übung angezeigt werden. Also angenommen man trainiert Garde am 05.05.2017
dann soll man Satz 1,2 und 3 vom 03.05.2017 sehen, um bei meinem Beispiel von oben zu bleiben.
Ich hoffe ich konnte mein Vorhaben verständlich schildern.
Auf meiner Suche nach einer Lösung bin ich an dem Befehl MAX(Datum) vorbeigekommen, weiß allerdings nicht wirklich wie ich den richtig einsetzen kann.
Meine Idee für a) war folgende:
SELECT * FROM `kraft`
where benutzer = 'user1' AND uebung = 'uebung1' AND datum = 'MAX(datum)'
order by datum desc
für b) hab ich noch gar keine Idee. Gibt es irgendwie einen Befehl wie MAX(Datum) -1 oder sowas ?
Nun wird der erfahrene SQL Programmiere sicherlich über mich lachen, da das nicht funktioniert.
Habt ihr Tips für mich?
Leider beherrsche ich ... ne falsch ... leider kenne ich nur die SELECT Befehle: WHERE, ORDER BY und LIMIT da das Tutorial welches ich mir durchgelesen habe
diese als wesentliche Befehle bezeichnet und auch nur diese erklärt hat.
Erstmal vielen Dank fürs durchlesen meiner Frage !
Für eure Hilfe wäre ich sehr Dankbar !
ich möchte mir und meiner Freundin gerne ein Trainingstagebuch bauen. Leider hab ich kaum Erfahrung in der Webentwicklung und bin grade erst in den Anfängen mich da
so ein bisschen einzuarbeiten.
Für dieses Tagebuch habe ich eine MySQL Tabelle mit folgenden Spalten:
id | datum | benutzer | uebung | satz | wiederholung | gewicht | anstrengung |
1 | 2017-05-01 | user1 | uebung1 | 1 | 15 | 50 | 2 |
2 | 2017-05-01 | user1 | uebung1 | 2 | 15 | 50 | 3 |
3 | 2017-05-01 | user1 | uebung1 | 3 | 12 | 50 | 4 |
4 | 2017-05-01 | user1 | uebung2 | 1 | 17 | 20 | 1 |
5 | 2017-05-01 | user1 | uebung2 | 2 | 15 | 20 | 2 |
5 | 2017-05-01 | user1 | uebung2 | 3 | 15 | 20 | 3 |
5 | 2017-05-01 | user1 | uebung2 | 4 | 12 | 20 | 4 |
Angenommen es gibt mehrere User, die ca. 5 Übungen pro Trainingstag haben mit entweder 2,3 oder 4 für Sätzen.
Wenn ich trainiere möchte ich gerne a) sehen welche Eingaben (über Formulare) ich grade für eine bestimmte Übung gemacht habe und b) möchte ich mir für diese Übung, die Einträge des letzten Trainingtags anzeigen lassen. Also angenommen ich war am 01.05.2017, am 03.05.2017 und am 05.05.2017 trainieren (User2 zwischendurch auch) wie kann ich mir
a) für Übung 1 die Einträge des letzten Trainingstags anzeigen lassen (also für den 05.05.2017) ?
b) für Übung 1 die Einträge von vorletzten Trainingstag (vom 03.05.2017) ?
Aktuell lasse ich mir folgendes ausgeben:
SELECT satz, gewicht, wiederholungen, datum, id FROM tabelle order by datum desc, satz limit 6
also eine ganz einfache Ausgabe... immer die letzten 6 Einträge. Also werden bei Übungen mit 3 Sätzen immer die letzten beiden Trainingstage angezeigt.
Das brauche ich aber in Zukunft anderes weil:
- ich habe nun auch Übungen mit 2 und mit 4 Sätzen habe
- ich möchte mir die Ausgabe für den letzten Trainingstag und den vorletzten nun an verschiedenen Orten anzeigen lassen ... nicht mehr direkt hintereinander.
Ich stelle mir das so vor dass man die Einträge nach jedem Satz quasi live im Fitti in sein Handy einträgt und die Einträge in der Nähe vom Eintragsformular erscheint.
Wenn man also den 1. Satz von Übung 1 ausgeführt hat trägt man die Ergebnisse ein und sobald der Satz eingetragen und abgesendet ist soll er in der Nähe der
Eingabeformulare Ausgegeben werden.
Irgendwo anders soll aber von Anfang bis Ende der Übung der letzte Trainingstag für diese Übung angezeigt werden. Also angenommen man trainiert Garde am 05.05.2017
dann soll man Satz 1,2 und 3 vom 03.05.2017 sehen, um bei meinem Beispiel von oben zu bleiben.
Ich hoffe ich konnte mein Vorhaben verständlich schildern.
Auf meiner Suche nach einer Lösung bin ich an dem Befehl MAX(Datum) vorbeigekommen, weiß allerdings nicht wirklich wie ich den richtig einsetzen kann.
Meine Idee für a) war folgende:
SELECT * FROM `kraft`
where benutzer = 'user1' AND uebung = 'uebung1' AND datum = 'MAX(datum)'
order by datum desc
für b) hab ich noch gar keine Idee. Gibt es irgendwie einen Befehl wie MAX(Datum) -1 oder sowas ?
Nun wird der erfahrene SQL Programmiere sicherlich über mich lachen, da das nicht funktioniert.
Habt ihr Tips für mich?
Leider beherrsche ich ... ne falsch ... leider kenne ich nur die SELECT Befehle: WHERE, ORDER BY und LIMIT da das Tutorial welches ich mir durchgelesen habe
diese als wesentliche Befehle bezeichnet und auch nur diese erklärt hat.
Erstmal vielen Dank fürs durchlesen meiner Frage !
Für eure Hilfe wäre ich sehr Dankbar !
Kommentar