Question

Voici mes données:

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 

Ce que j'aimerais faire, c'est grouper chaque date, puis énumérer les numéros d'identification sous chaque date. Devrais-je obtenir les valeurs de date distinctes, puis les parcourir pour obtenir les entrées correspondant à la date? est-ce efficace?

afin que ma sortie ressemble à:

2009-01-01  
1  
2   
2009-01-02  
3  
2009-01-03  
4  
5  
Était-ce utile?

La solution

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

Au lieu de le faire dans plusieurs requêtes, il vous suffit d'extraire toutes les données à la fois. Si vous avez seulement besoin de dates, il vous suffit de placer une clause WHERE avant le ORDER BY .

Autres conseils

Vos dates stockées ont des informations de temps (le type de colonne est DATETIME ou TIMESTAMP). Pour créer un groupe par, vous devez extraire uniquement la date qui fait partie de votre période, vous pouvez utiliser le fonction DATE () .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top