php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 18-09-2012, 12:09
gruenspan
 Registrierter Benutzer
Links : Onlinestatus : gruenspan ist offline
Registriert seit: Oct 2005
Beiträge: 470
gruenspan ist zur Zeit noch ein unbeschriebenes Blatt
Standard Daten täglich, wöchentlich oder monatlich auslesen.

Hallo zusammen,

ich habe eine Datenbanktabelle, in der tagesaktuelle Daten hinterlegt werden. Die Daten reichen teilweise bis 1990 zurück. Entsprechend hoch ist die Datenmenge. Bei der Ausgabe der Daten kommt es jedoch zu Performance-Problemen, wenn ein Benutzer einen entsprechend großen Zeitraum wählt.

Ist es mittels MySQL (oder PHP) möglich z.B. nur jeden ersten Wert eines jeweiligen Monats/Woche auszugeben? Brauche da einen Gedankenanstoss.
Mit Zitat antworten
  #2 (permalink)  
Alt 18-09-2012, 12:36
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

zeig mal bitte die Grundstruktur deiner Datenbank + 1-2 Beispieldaten und wie Du darauf zugreifst.

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #3 (permalink)  
Alt 18-09-2012, 14:57
gruenspan
 Registrierter Benutzer
Links : Onlinestatus : gruenspan ist offline
Registriert seit: Oct 2005
Beiträge: 470
gruenspan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Datenbank sieht wie folgt aus:
Code:
"ID";"DATUM";"WERT"
...
"144";"1999-02-09 00:00:00";"41.8"
"144";"1999-02-11 00:00:00";"41.88"
"144";"1999-02-15 00:00:00";"40.51"
"144";"1999-02-16 00:00:00";"40.41"
"144";"1999-02-18 00:00:00";"40.34"
"144";"1999-02-22 00:00:00";"40.42"
"144";"1999-02-24 00:00:00";"40.57"
"144";"1999-02-28 00:00:00";"40.45"
"144";"1999-03-02 00:00:00";"40.3"
"144";"1999-03-04 00:00:00";"40.2"
"144";"1999-03-08 00:00:00";"40.23"
"144";"1999-03-09 00:00:00";"40.29"
"144";"1999-03-11 00:00:00";"40.28"
"144";"1999-03-15 00:00:00";"40.44"
"144";"1999-03-17 00:00:00";"40.47"
"144";"1999-03-18 00:00:00";"40.52"
"144";"1999-03-19 00:00:00";"40.55"
"144";"1999-03-22 00:00:00";"40.61"
"144";"1999-03-23 00:00:00";"40.54"
"144";"1999-03-24 00:00:00";"40.48"
"144";"1999-03-25 00:00:00";"40.54"
"144";"1999-03-26 00:00:00";"40.57"
"144";"1999-03-29 00:00:00";"40.53"
"144";"1999-03-30 00:00:00";"40.52"
"144";"1999-03-31 00:00:00";"40.55"
...
Einen konkreten Query haben ich noch nicht, aber die erste Überlegung wäre auf die Eingabe des Nutzers zu reagieren (Anfangs-/Enddatum).
PHP-Code:
$query "SELECT * FROM tabelle WHERE DATUM 
BETWEEN '"
.$date['minDate']."' AND '".$date['maxDate']."' " 
Es soll aber je nach Größe des Zeitraums eben nur bspw. ein Wert pro Monat/Woche/Tag genommen werden
Mit Zitat antworten
  #4 (permalink)  
Alt 18-09-2012, 18:14
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

du kannst mit einer LIMIT-Klausel die Anzahl der auszugebenden Datensätze begrenzen. Wenn du die Ergebnisse auf mehrere Seiten aufteilen willst, wäre „Paginierung“ / „Pagination“ das Stichwort.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 19-09-2012, 11:07
gruenspan
 Registrierter Benutzer
Links : Onlinestatus : gruenspan ist offline
Registriert seit: Oct 2005
Beiträge: 470
gruenspan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo AmicaNoctis,

danke für die Antwort. Die Daten werden aber nicht in Tabellen-Form ausgegeben, sondern in einem Chart (highcharts.com). Das Problem ist dann die schiere Masse an Punkten die gerendert werden müssen. Daher auch der Ansatz
ab einer Gewissen Zeitraum-Größe nur einen Wert pro Monat auszulesen.

Mittlerweile steht auch fest, dass bei monatlicher Ausgabe immer der letzte Wert des jeweiligen Monats benötigt wird. Das könnte eventuell die Rechnerei etwas erleichtern. Aber mal sehen wie.

Wäre für weiter Hilfe dankbar.

EDIT: Es gibt zwar bei highcharts.com eine standardmäßige Gruppierung von Daten im Chart, allerdings werden die Daten dann von mehreren Tagen zusammengefasst und so eine Art Quersumme gebildet um sie dann auf dem Chart abzubilden. Das führt allerdings zu gerundeten und damit in meinem Fall zu falschen Ergebnissen.

Geändert von gruenspan (19-09-2012 um 11:10 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 19-09-2012, 11:14
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von gruenspan Beitrag anzeigen
Daher auch der Ansatz
ab einer Gewissen Zeitraum-Größe nur einen Wert pro Monat auszulesen.
Achso, einer pro Monat. Das war bisher nicht ersichtlich. In diesem Falle hilft das letzte Beispiel auf MySQL :: MySQL 5.1 Reference Manual :: 3.6.4 The Rows Holding the Group-wise Maximum of a Certain Column

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 19-09-2012, 20:31
gruenspan
 Registrierter Benutzer
Links : Onlinestatus : gruenspan ist offline
Registriert seit: Oct 2005
Beiträge: 470
gruenspan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke AmicaNoctis,

ich denke das sollte in etwa diesem Beispiel entsprechen.

Ich teste das mal und melde mich ggf. bei Rückfragen

PS. Danke für den Schubs in die richtige Richtung.
Mit Zitat antworten
  #8 (permalink)  
Alt 19-09-2012, 22:26
gruenspan
 Registrierter Benutzer
Links : Onlinestatus : gruenspan ist offline
Registriert seit: Oct 2005
Beiträge: 470
gruenspan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, aktuell schaut's so aus:
PHP-Code:
SELECT MAX(datum) AS datumpreis
FROM historie
WHERE id 
'123'
GROUP BY YEAR(datum), MONTH(datum)
ORDER BY datum DESC LIMIT 0,1000 
Ergebnisse scheinen auf den ersten Blick relevant. Werd das mal näher prüfen.

EDIT: Datum richtig, Werte sind die falschen

Geändert von gruenspan (20-09-2012 um 09:40 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 20-09-2012, 10:49
gruenspan
 Registrierter Benutzer
Links : Onlinestatus : gruenspan ist offline
Registriert seit: Oct 2005
Beiträge: 470
gruenspan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, Lösung gefunden.
PHP-Code:
SELECT h1.datum AS datumh1.preis AS preis
  FROM historie h1
  JOIN 
SELECT DATE_FORMAT(datum,'%Y-%m') AS dMAX(DATE_FORMAT(datum,'%d %H:%i:s')) AS dmax 
          FROM historie
          GROUP BY DATE_FORMAT
(datum,'%Y-%m')
          
ORDER BY NULL 
       
m
    ON DATE_FORMAT
(h1.datum,'%Y-%m') = m.d
   
AND DATE_FORMAT(h1.datum,'%d %H:%i:s') = m.dmax
   
AND h1.id 123
ORDER BY h1
.datum 
Quelle »
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild und Text wöchentlich ändern Antonia PHP Developer Forum 2 17-02-2008 17:33
Zufallsausgabe wöchentlich Andreas13357 PHP Developer Forum 1 11-08-2007 00:08
Datensätze monatlich darstellen Benji SQL / Datenbanken 10 08-09-2003 22:45
täglich ein Zufallslink PictureArtist PHP Developer Forum 4 04-02-2003 20:52
Auslesen Daten MySQL und Weiterverlinkung mit nächsten Daten rammann PHP Developer Forum 2 07-01-2002 14:45

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:52 Uhr.