2009-03-08 3 views
1

Hier ist meine Daten:Gruppierung und Anzeigen von Einträgen unter dem Datum

id date 
1 2009-01-01 10:15:23 
2 2009-01-01 13:21:29 
3 2009-01-02 01:03:13 
4 2009-01-03 12:20:19 
5 2009-01-03 13:01:06 

Was Ich mag würde, ist Gruppe von jedem Zeitpunkt zu tun und dann unter jedem Zeitpunkt die ID-Nummern aufzulisten. Sollte ich die eindeutigen Datumswerte erhalten und dann durch sie hindurchgehen, um die Einträge zu erhalten, die auf das Datum fallen? ist das effizient?

so würde meine Ausgabe wie folgt aussehen:

2009-01-01 
1 
2 
2009-01-02 
3 
2009-01-03 
4 
5 

Antwort

3
$query = "SELECT DATE(date) as mydate, id FROM your_data_table ORDER BY mydate, id"; 
$result = $pdo->query($query); 

$oldDate = false; 
while (list($date, $id) = $result->fetch(PDO::FETCH_NUM)) { 
    if ($oldDate != $date) { 
     echo "$date\n$id\n"; 
     $oldDate = $date; 
    } else { 
     echo "$id\n"; 
    } 
} 

Anstatt es in mehreren Abfragen zu tun, holen Sie einfach alle Daten auf einmal. Wenn Sie nur einige Daten benötigen, dann setzen Sie einfach eine WHERE Klausel vor die ORDER BY.

2

Ihre gespeicherten Daten Zeitinformation (die Art der Säule DATETIME- oder einem Zeitstempel) haben, um durch eine Gruppe zu tun, müssen Sie nur die extrahieren Datum Teil Ihre Zeitspanne, können Sie die DATE() Funktion verwenden.

+0

Richtig, und das ist in Ordnung. Lass uns einfach sagen, ich ziehe die verschiedenen Daten. Mache ich das als eine separate Abfrage? Dann die Ergebnisse durchlaufen und eine weitere Abfrage ausführen, um alle Einträge zu erhalten, die mit dem Datum übereinstimmen? Scheint einfach nicht zu effizient ... –

+0

nein, du machst nur eine Abfrage und wirfst den 'Zeit' Teil dieser Spalte weg. – Alnitak

Verwandte Themen