CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
15.05.2011, 16:46:01
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 37
Beiträge: 26
|
|
MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hi,
ich habe eine Datenbank in der alle fünf Miuten Daten einer Solaranlage eingetragen werden.
Nun möchte ich gerne in einer Monatsübersicht jeweils den letzten und somit höchsten Ertragswet eines jeden Tages ausgeben wi löse ich das.
ich habe bis jetzt folgendes
PHP-Code:
"SELECT `Tagesetrag`, `Datum` FROM `TableName` WHERE MONTH(`Datum`)='5' AND YEAR(`Datum`)='2011'"
nur werden mir jetzt noch alle Wert des monats ausgegeben wie bekomme ich es hinn das mir nur der letzte wert eines jeden Tages ausgegeben werden?
Gruß
Borsti87
|
15.05.2011, 17:05:40
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hi
ist der Tabellenaufbau geheim? falls nein bitte inklusive Testdaten.
Ohne geht hier nix, Glaskugeln sind hier verboten ;)
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
15.05.2011, 17:26:16
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 37
Beiträge: 26
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hier ein paar infos zur Datenbank:
--
-- Tabellenstruktur für Tabelle `Logdata`
--
CREATE TABLE IF NOT EXISTS `Logdata` (
`Datum` datetime NOT NULL,
`Tagesetrag` float(5,1) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Daten für Tabelle `Logdata`
--
INSERT INTO `Logdata` (`Datum`, `Tagesetrag`) VALUES
('2011-05-15 16:00:00', 31.8),
('2011-05-15 16:05:00', 32.0),
('2011-05-15 16:10:00', 32.1),
('2011-05-15 16:15:00', 32.3),
('2011-05-15 16:20:00', 32.4),
('2011-05-15 16:25:00', 32.6),
('2011-05-15 16:30:00', 32.9),
('2011-05-15 16:35:00', 33.2),
('2011-05-15 16:40:00', 33.6),
('2011-05-15 16:45:00', 33.9),
('2011-05-15 16:50:00', 34.0),
('2011-05-15 16:55:00', 34.0),
('2011-05-15 17:15:00', 34.2);
|
15.05.2011, 17:54:37
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hi
vielleicht inspiriert dich das
Code:
SELECT max(Datum)as Datum,max(Tagesetrag) as Tagesetrag FROM Logdata
group by date(Datum)
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
15.05.2011, 19:46:13
|
Junior Member
|
|
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hallo Bosti87,
interessantes Problem. Ich habe die Testdaten mal sinnvoll ergänzt. Ich gehe davon aus, dass Deine echte Tabelle einen Primary Key hat. Dann könnte die Lösung anderst aussehen, so aber passend zu dem Beispiel.
Code:
INSERT INTO `Logdata` (`Datum`, `Tagesetrag`) VALUES
('2011-03-28 17:00:00', 11.8),
('2011-04-15 16:00:00', 21.8),
('2011-05-15 16:00:00', 31.8),
('2011-05-15 16:05:00', 32.0),
('2011-05-15 16:10:00', 32.1),
('2011-05-15 16:15:00', 32.3),
('2011-05-15 16:20:00', 32.4),
('2011-05-15 16:25:00', 32.6),
('2011-05-15 16:30:00', 32.9),
('2011-05-15 16:35:00', 33.2),
('2011-05-15 16:40:00', 33.6),
('2011-05-15 16:45:00', 33.9),
('2011-05-15 16:50:00', 34.0),
('2011-05-15 16:55:00', 34.0),
('2011-05-15 17:15:00', 34.2);
Dazu dieser SQL. Nicht schön, nicht performant, aber selten.
Code:
SELECT l.datum AS letzter_tag, l.tagesetrag AS endbetrag
FROM logdata l
JOIN ( SELECT DATE_FORMAT(datum,'%Y-%m') AS d, MAX(DATE_FORMAT(datum,'%d %H:%i:s')) AS dmax
FROM logdata
GROUP BY DATE_FORMAT(datum,'%Y-%m')
ORDER BY NULL
) m
ON DATE_FORMAT(l.datum,'%Y-%m') = m.d
AND DATE_FORMAT(l.datum,'%d %H:%i:s') = m.dmax
ORDER BY l.datum;
+---------------------+-----------+
| letzter_tag | endbetrag |
+---------------------+-----------+
| 2011-03-28 17:00:00 | 11.8 |
| 2011-04-15 16:00:00 | 21.8 |
| 2011-05-15 17:15:00 | 34.2 |
+---------------------+-----------+
3 rows in set (0.00 sec)
mysql>
So oder ähnlich könnte die Lösung aussehen.
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
|
15.05.2011, 20:06:44
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hi
wie immer interessante SQL's von dir Thomas_w, aber
was gefiel dir jetzt nicht an meinem Ansatz?
Der liefert ja das selbe Ergebnis.
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
15.05.2011, 20:15:14
|
Junior Member
|
|
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hallo Ckaos,
stimmt, Dein SQL liefert das selbe Ergebnis. Du gehst davon aus, dass der Tageswert immer ansteigt und greifst ihn mit max(Tagesetrag) ab. Ich gehe davon aus, dass die Zeit immer ansteigt umd hole mir den letzten Datensatz des Monats und kann ihn bei Bedarf komplett anzeigen.
Ohne echte Datenkenntnisse läßt sich nicht ermittelt welche der beiden Lösungen nun die bessere oder richtige ist. Soweit mal ein "unentschieden" würde ich sagen.
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
|
19.05.2011, 22:00:34
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 37
Beiträge: 26
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hi Thomas,
wie könnte das dem mit einem Primary Key aussehen?
|
19.05.2011, 22:36:32
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Hi
Zitat:
wie könnte das dem mit einem Primary Key aussehen?
|
Wenn du sagst was der Primary ist könnte man es darstellen, aber wozu
die Frage war
Zitat:
jeweils den letzten und somit höchsten Ertragswet eines jeden Tages ausgeben
|
Das erledigt mein SQL.
Was dir da fehlt hast du uns verheimlicht.
@thomas
Zitat:
dass der Tageswert immer ansteigt
|
Das schrieb er ja ;)
Zitat:
hole mir den letzten Datensatz des Monats
|
Er wollte ja jeden Tages
Deine SQL's inspirieren mich bei noch abzuarbeitenden Arbeiten.
Deswegen speichere ich sie mir alle ;)
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
19.05.2011, 22:48:54
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 37
Beiträge: 26
|
|
AW: MySQL Letzten Eintag jeden Tages eines Monats eines Jahres ausgeben
Das Problem ist das ich recht viele Daten sammle in der zeit von etwa 6 bis 21 Uhr alle fünf minuten ein datensatz und das schein die abfrage der datenbank zimlich zu bremsen jetzt möchte ich gerne wissen ob es irgendwie schneller geht?
Der primärschlüssel wir vom ersten datensatz an hochgezählt die frage ist nur ob das bei der menge von daten einen sinn macht einen primärschlüssel anzulegen?
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:39:50 Uhr.
|