Domanda

Ecco i miei dati:

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 

Quello che mi piacerebbe fare è raggruppare per ogni data e quindi elencare i numeri ID sotto ogni data. Dovrei ottenere i valori di data distinti e quindi scorrere ciclicamente per ottenere le voci che rientrano nella data? è efficiente?

quindi il mio output sarebbe simile a:

2009-01-01  
1  
2   
2009-01-02  
3  
2009-01-03  
4  
5  
È stato utile?

Soluzione

$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";
    }
}

Invece di farlo in diverse query, devi solo recuperare tutti i dati contemporaneamente. Se hai solo bisogno di alcune date, inserisci semplicemente una clausola WHERE prima di ORDER BY .

Altri suggerimenti

Le tue date memorizzate hanno informazioni sull'ora (il tipo di colonna è DATETIME o TIMESTAMP), per fare un gruppo per, devi estrarre solo la parte della tua fascia oraria, puoi usare funzione DATE () .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top