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 29-03-2011, 18:25
jason2030
 Registrierter Benutzer
Links : Onlinestatus : jason2030 ist offline
Registriert seit: Mar 2011
Beiträge: 5
jason2030 befindet sich auf einem aufstrebenden Ast
Standard Anzahl der Einträge für die letzten 30 Tage

Ich habe eine Tabelle die wie folgt aufgebaut ist:

id | timestamp | wert

Folgende Daten sind beispielsweise enthalten:

5 | 1301413413 | 1
4 | 1301413413 | 1
3 | 1301232332 | 1
2 | 1300232332 | 1
1 | 1301322123 | 1

Wie kann ich am sinnvollsten für die letzten 30 Tage eine Anfrage machen, die mir die Anzahl der Einträge pro Tag zurück gibt? Also in der Form:

29.03.2011 | 3
28.03.2011 | 7
.
.
.

Bis zu folgendem Statement weiss ich leider nicht mehr weiter:

SELECT FROM_UNIXTIME(`timestamp`, '%d.%m.%Y') as datum , COUNT(*) FROM `tabelle` GROUP BY FROM_UNIXTIME(`timestamp`, '%d.%m.%Y') ORDER BY timestamp DESC LIMIT 0,30

Ich bekomme zwar die Werte pro Tag, allerdings nicht für die letzten 30 Tage. Auch sollen Tage, an denen es keine Einträge gab, mit 0 angezeigt werden.
Mit Zitat antworten
  #2 (permalink)  
Alt 29-03-2011, 21:04
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Mit strtotime den timestamp von vor 30 Tagen errechnen und dann WHERE timestamp größer als der errechnete Timestamp.

Einträge (mit 0) hinzuzuerfinden dürfte schwierig werden. Aber im verarbeitenden Programm sollte es ja ein leichtes sein, die fehlenden Tage zu errechnen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 30-03-2011, 08:24
jason2030
 Registrierter Benutzer
Links : Onlinestatus : jason2030 ist offline
Registriert seit: Mar 2011
Beiträge: 5
jason2030 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank! Die Funktion strtotime ist natürlich Gold wert. Ich kannte Sie zwar, wusste aber ehrlich gesagt nicht, wie "mächtig" sie ist.

Ich mache es jetzt so, dass ich in einer Schleife vom aktuellen Tag an, die letzten 30 Tage durchlaufen lassen und dann ein COUNT(*) auf den jeweiligen Tag mache in der Datenbank mache.

Hatte gehofft, dass es auch rein mit SQL geht.

Nachtrag:

Wie folgt sieht der PHP-Code aus, falls es jemandem hilft :-)

PHP-Code:
$today strtotime(date('Y-m-d'));

for(
$today=$date=strtotime(date('Y-m-d'));$date>=strtotime('-30 days',$today);$date=strtotime('-1 days',$date)) 

... 

Geändert von jason2030 (30-03-2011 um 08:53 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 30-03-2011, 08:51
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,

bitte benutz die Code-Tags, damit sieht der Code übersichtlicher aus und bei PHP-Code hat man gleich noch Syntax Highlighting.

Zitat:
Zitat von jason2030 Beitrag anzeigen
Hatte gehofft, dass es auch rein mit SQL geht.
Das geht auch. Zwar bekommst du die fehlenden Tage dazwischen nicht mit 0, aber die kannst du ja nachträglich einfügen. Die anderen Tage kannst du aber mit einer einzigen Abfrage ermitteln:

Code:
select count(*)
from tabelle
where `timestamp` >= curdate() - interval 30 day
group by date(`timestamp`)
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!

Geändert von AmicaNoctis (30-03-2011 um 08:54 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 30-03-2011, 08:55
jason2030
 Registrierter Benutzer
Links : Onlinestatus : jason2030 ist offline
Registriert seit: Mar 2011
Beiträge: 5
jason2030 befindet sich auf einem aufstrebenden Ast
Standard

Danke! Habe nun mit SQL noch etwas herumexperimentiert. Folgende "Funktionen" waren mir bisher unbekannt :-(

Code:
... BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE() ...
Mit Zitat antworten
  #6 (permalink)  
Alt 30-03-2011, 08:58
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 jason2030 Beitrag anzeigen
Folgende "Funktionen" waren mir bisher unbekannt
Du kanntest also SQL zwar, wusstest aber ehrlich gesagt nicht, wie mächtig es ist?
__________________
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 30-03-2011, 09:04
jason2030
 Registrierter Benutzer
Links : Onlinestatus : jason2030 ist offline
Registriert seit: Mar 2011
Beiträge: 5
jason2030 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Du kanntest also SQL zwar, wusstest aber ehrlich gesagt nicht, wie mächtig es ist?
Bin halt schon ein älteres Semester PHP + MySQL ist relatives Neuland für mich. Lerne aber sehr gerne dazu. Beides ist ja hervorragend dokumentiert, jedoch fehlt manchmal so ein kleiner Schubs in die richtige Richtung.
Mit Zitat antworten
  #8 (permalink)  
Alt 30-03-2011, 14:17
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Ist vielleicht nicht relevant, aber CURDATE() dürfte einen etwaigen Query Cache aushebeln.

Tendentiell das Datum vielleicht besser per PHP in die Query schreiben.

- MySQL :: MySQL 5.1 Reference Manual :: 7.6.3.1 How the Query Cache Operates
- PHP: date - Manual
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
einträge der letzten 14 tage anzeigen yessirs SQL / Datenbanken 2 30-11-2006 16:22
DB-Einträge der letzten 7 Tage auslesen golfer69 SQL / Datenbanken 14 01-06-2006 23:03
[Funktion] Ausgabe der 3.-Letzten bis 6-Letzten Einträge dabri PHP Developer Forum 3 20-11-2005 16:40
Anzahl der Tage des letzten Monats als Veriable bekommen? tschekowski PHP Developer Forum 5 12-04-2005 16:22
die letzten geb.tage ermitteln s.roettger PHP Developer Forum 7 29-03-2005 18:28

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 15:27 Uhr.