Datenbankausgabe gefiltern nach Datum

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datenbankausgabe gefiltern nach Datum

    Hallo.

    ich versuche schon die ganze Zeit bestimmte Daten aus der Datenbank zu bekommen. Es geht darum.

    Ich möchte eine Abfrage machen, welche mir alle Views eines Bildes von heute und von vergangener Zeit.

    Ich habe folgende tabelle: impressions (bannerid, user, views, datum). Folgende Daten sind enthalten: ( 1, 1, 23, 2008-08-07 ) und ( 1, 1, 56, 2008-08-08 ) und ( 2, 1, 33, 2008-08-07 ).
    Jetzt möchte ich folgende Ausgabe erhalten:

    Quellcode

    1. +-------------------------+
    2. | Bannerid | Views |
    3. +-------------------------+
    4. | 1 | Heute: 56 |
    5. | | Alle:79 |
    6. +-------------------------+
    7. | 2 | Heute: 0 |
    8. | | Alle: 33 |
    9. +-------------------------+


    Die Ausgabe soll halt nach Datum und nach Bannerid erfolgen. Ich hab das ganze schon mal so probiert.

    Quellcode

    1. SELECT bannerid,views FROM impressions WHERE datum=CURDATE()
    oder

    Quellcode

    1. SELECT bannerid,views FROM impressions

    Und dann abgefragt per

    Quellcode

    1. while ($impressions_today = mysql_fetch_assoc($query))
    Aber entweder bekomme ich die Ergebnisse von heute oder nur von alle. Wie kann man das verbinden?
  • SQL ist da ziemlich cool. Einfach einen Tag abziehen, wenn du die Daten von gestern willst.

    Quellcode

    1. SELECT bannerid,views FROM impressions WHERE datum=CURDATE()-1;


    Komplexere Möglichkeiten erhältst du mit DATE_SUB und INTERVAL.

    Quellcode

    1. SELECT something FROM tbl_name
    2. WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

    dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html
  • Danke für die Antwort.

    Das habe ich ja auch schon probiert. Kann man diese beiden Anforderungen, also die Views von heute und die gesamten Views mit einer einzigen Abfrage lösen?

    Ich habe versucht das ganze mal so zu lösen:

    Quellcode

    1. // Impressions heute
    2. $query1 = mysql_query('SELECT bannerid,views,clicks FROM impressions NATURAL JOIN banner WHERE impressions.affiliateid="1" AND datum=CURDATE()') OR die(mysql_error());
    3. // Alle Impressions
    4. $query = mysql_query('SELECT bannerid,sum(views) as gviews,sum(clicks) as gclicks FROM impressions NATURAL JOIN banner WHERE impressions.affiliateid="1" GROUP BY bannerid') OR die(mysql_error());
    5. echo '<table width="500" cellpadding="0" cellspacing="0" border="1"><tr><th colspan="1">LinkNr.</th><th colspan="1">Views</th>
    6. <th colspan="1">Klicks</th><td>Clickratio</td></tr>';
    7. while ($impressions_all = mysql_fetch_assoc($query)) {
    8. $impressions_today = mysql_fetch_assoc($query1);
    9. echo '<tr><td>'.$impressions_all['bannerid'].'</td><td><p>Heute: '.$impressions_today['views'].'</p>
    10. <p>Alle: '.$impressions_all['gviews'].'</p></td><td><p>Heute: '.$impressions_today['clicks'].'</p>
    11. <p>Alle: '.$impressions_all['gclicks'].'</p></td><td>0</td></tr>';
    12. }
    13. echo '<tr><td colspan="1">Summe</td><td colspan="1">3</td><td colspan="1">&nbsp;</td><td colspan="1">0</td></tr></table>';
    Alles anzeigen


    Gibt es dafür auch ne einfachere Lösund?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mycros ()