ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
291
291
EMPFEHLEN
-
11.02.09 09:30 #1
- Registriert seit
- Feb 2007
- Beiträge
- 28
Hallo Leute,
ich programmiere gerade an einem kleinem WarenWirtschaftssystem. Nun arbeite ich an dem Kassensturz und hab da ein paar query-probleme. Die "Kassenstand"-Tabelle sieht wie folgt aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
Datum Kassenstand ------------------------|------------------------------ ............. 10.02.2009 08:05:21 | 1500,00 10.02.2009 09:15:21 | 1550,00 10.02.2009 10:35:21 | 2540,00 10.02.2009 11:12:21 | 2550,00 10.02.2009 12:45:21 | 3214,00 11.02.2009 10:45:21 | 1500,00 11.02.2009 10:55:21 | 2400,00 11.02.2009 11:45:21 | 3510,00 11.02.2009 12:40:21 | 4572,00 ............
In der Tabelle sind halt alle Kassenstände jeden Tages drin und den Kassenstand des aller letzten kann ich ganz einfach abrufen mit:
Code :1
SELECT Kassenstand FROM Kassenstand WHERE Datum=\"" + Datum + "\";
Soweit so gut!
Nun möchte ich aber z.B. den Kassenbestand vom 10.02.2009 abrufen (also quasi den letzten Datensatz vom 10.02 aus der Tabelle) nur weiß ich nicht wie. Ich habe es mal so gelöst:
Code :1
SELECT Datum, MAX(Kassenstand) FROM kassenstand WHERE Datum LIKE '%10.02.2009%';
Funktioniert soweit auch ganz gut, allerdings kann es ja sein das aus der Kasse etwas rausgenommen wird z.B. für Nachnamepakete etc. und die Kasse am Ende weniger Bargeld enthält wie am Anfang des Tages. Dann trifft diese query nämlich nicht mehr zu
Nun versuch ich verzweifelt spezifisch den letzten Datensatz des Tages zu bekommen. Ist dieses überhaupt so ohne weiteres möglich?
MFG
-
Hallo punisher86,
warum nimmst du nicht einfach Max(Datum)?Gruss Bernd
Zitat von mAu
-
11.02.09 10:45 #3
- Registriert seit
- Feb 2007
- Beiträge
- 28
Das hab ich auch schon ausprobiert, aber da ruft der mir nur das max datum mit dem ersten kassenstand ab
oder ich mache was falsch
-
Da machst Du was falsch.
Wie Bernd1984 geschrieben hat: MAX (datum) ist der richtige Wege. Also:
select * from tabelleIrgendwas where max(meinDatum);
Es kann sein, dass Dein Datumsform nicht korrekt ist. Dann wandle das Datum gleich in nen UNIXTimestamp um. Achja: Mit dem LIKE würde ich äußerst vorsichtig umgehen. Langsam und führt unbedacht eingesetzt zu falschen Ergebnissen.
Chris
-
11.02.09 11:22 #5
- Registriert seit
- Feb 2007
- Beiträge
- 28
Allerdings "meinDatum" sollte LIKE "string" sein. Das würde dann aber so nicht gehen

mfg
-
11.02.09 12:14 #6
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
sortier doch noch absteigend nach dem Datum und wähle nur einen Datensatz per Limit aus.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
11.02.09 12:28 #7
- Registriert seit
- Feb 2007
- Beiträge
- 28
Wie meinst du das genau?
-
11.02.09 12:46 #8
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Was genau verstehst Du daran nicht?
Nimm das MAX(Kassenstand) da raus, das willst Du doch gar nicht haben, und sortiere absteigend nach Datum. Der erste gefundene Datensatz ist doch das, was Du willst. Kannst Du dann per LIMIT-Klausel auch gleich auf einen Datensatz im Ergebnis einschränken.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
11.02.09 13:38 #9
- Registriert seit
- Feb 2007
- Beiträge
- 28
Theoretisch gedacht würde es ja so funktionieren:
Code :1
SELECT Kassenstand FROM Kassenstandtabelle WHERE MAX(Datum);
Allerdings geht das net wegen:
Code :1
Invalid use of group function
Das mit den sortieren und dem Limit kann ich nicht ganz nachvolziehen, warum auch immer
Wahrscheinlich bin ich zu blöd oder hab ne Denkblockade
-
11.02.09 13:51 #10
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
naja, abgesehen davon, dass die Query so falsch ist, wie Du ja bemerkt hast, warum willst Du denn jetzt wieder das höchste Datum haben. Ich dachte, Du willst den letzten Eintrag eines bestimmten Tages.
In Worten: Suche alle Datensätze eines bestimmten Datums und sortiere das Ergebnis absteigend nach Datum (da dann der Datensatz mit dem höchsten Datumswert an erster Stelle steht). Komm schon, so schwer ist das doch nicht...
Hmm, scheint so. Vielleicht solltest Du'n paar mal um den Block rennen oder Dir einen ordentlichen Kaffee reinpfeifen. Wahlweise auch beides.
LGDa es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
11.02.09 14:01 #11
- Registriert seit
- Feb 2007
- Beiträge
- 28
Hehe mit dem Kaffee hab ich erledigt, das mit dem um Block rennen muss ich mir noch ma überlegen xD
Mit dem höchsten Datum meinte ich das so:
Das Datumformat sieht so aus:
Code :1 2
10.02.2009 12:45:21 <--- man beachte das die Uhrzeit da mit drinne steckt :) 10.02.2009 18:22:21
Das heißt mit Max sucht der mit den 2. Datensatz raus, weil die Uhrzeit später ist.
Jetzt muss ich ihm ja nur noch sagen in welchen Tag er suchen soll, deswegen habe ich mit LIKE gearbeitet um in einem string ein Datum zu übergeben(10.02.2009) und dann sucht der aus dem Tag den letzten Datensatz raus
Soweit meine Vorstellung
-
11.02.09 14:14 #12
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.
-
11.02.09 14:16 #13
- Registriert seit
- Feb 2007
- Beiträge
- 28
Alles klar dann probier ich das mit deiner Sortier-Variante
Ich danke dir und poste dann nachher die Lösung um zu closen
Muss nun erst zum Kunden 
LG
-
12.02.09 13:58 #14
- Registriert seit
- Feb 2007
- Beiträge
- 28
Hallo Leute,
habe nun die Lösung. So klappt es wunderbar:
Code :1
SELECT Kassenstand FROM Entwicklung.Kassenstand WHERE Datum LIKE('%13.01%') ORDER BY Datum DESC Limit 1;
Kann geclosed werden
Ähnliche Themen
-
MySQL: Getriggerte Operation abrufen
Von raikkonentk im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 23.12.10, 12:53 -
MySQL Einzelne Einträge abrufen
Von dsNDesign im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 28.02.09, 19:11 -
Array in MySQL speichern und abrufen
Von Lachkopf im Forum PHPAntworten: 2Letzter Beitrag: 11.05.08, 21:48 -
Daten von MySQL Datenbank mit AJAX abrufen
Von forsterm im Forum Javascript & AjaxAntworten: 21Letzter Beitrag: 28.06.06, 23:56 -
MySQL Fehlermeldung mit PHP abrufen?
Von Moartel im Forum PHPAntworten: 1Letzter Beitrag: 23.08.01, 15:08





Zitieren

Login




