SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 15.05.2011, 16:46:01
borsti87 borsti87 ist offline
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
Mit Zitat antworten
  #2  
Alt 15.05.2011, 17:05:40
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #3  
Alt 15.05.2011, 17:26:16
borsti87 borsti87 ist offline
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);
Mit Zitat antworten
  #4  
Alt 15.05.2011, 17:54:37
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #5  
Alt 15.05.2011, 19:46:13
thomas_w thomas_w ist offline
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.
Mit Zitat antworten
  #6  
Alt 15.05.2011, 20:06:44
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #7  
Alt 15.05.2011, 20:15:14
thomas_w thomas_w ist offline
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.
Mit Zitat antworten
  #8  
Alt 19.05.2011, 22:00:34
borsti87 borsti87 ist offline
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?
Mit Zitat antworten
  #9  
Alt 19.05.2011, 22:36:32
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #10  
Alt 19.05.2011, 22:48:54
borsti87 borsti87 ist offline
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?
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Hilfe Partygirl MySQLi/PDO/(MySQL) 10 01.03.2011 08:18:11
MySQL Null in PHP ausgeben mc-bain MySQLi/PDO/(MySQL) 6 08.09.2009 10:35:48
Bitte hilfe Mysql spalte ausgeben Samq MySQLi/PDO/(MySQL) 1 17.06.2008 01:37:12
Mehrere Tabellen ausgeben, die Daten aus einer MySQL DB holen pekobe MySQLi/PDO/(MySQL) 3 20.08.2007 20:36:02
MySQL Abfrage mit PHP ausgeben, wie? PHP-MySQL-Fan MySQLi/PDO/(MySQL) 5 22.05.2006 14:47:23


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:39:50 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt