Purtroppo continuo ad avere problemi nell'estrazione della totalita' dei record, ok per l'estrazione dell'ora minima e massima, stavo pero' provando con dati non dinamici, solo con un numero badge e data di transito fissa, ovviamente pero' nel db ci sono molte piu' righe con molti piu' utenti e relative date e ore di transito.
----------------------------------------------------------------------------------------------
| ID | cognomeNome | numeroBadge | dataTransito | oraTransito | direzione |
----------------------------------------------------------------------------------------------
| 1 | Pluto | 123456 | 2024-01-25 | 07:32:23 | 1 |
| 2 | Pluto | 123456 | 2024-01-25 | 17:50:49 | 2 |
| 3 | Pluto | 123456 | 2024-01-27 | 07:05:00 | 1 |
| 4 | Pluto | 123456 | 2024-01-27 | 12:08:00 | 2 |
| 5 | Pluto | 123456 | 2024-01-27 | 13:31:00 | 1 |
| 6 | Pluto | 123456 | 2024-01-27 | 17:48:00 | 2 |
| 7 | Pippo | 789012 | 2024-01-25 | 07:12:00 | 1 |
| 8 | Pippo | 789012 | 2024-01-25 | 17:00:00 | 2 |
| 9 | Pippo | 789012 | 2024-01-26 | 07:05:00 | 1 |
| 10 | Pippo | 789012 | 2024-01-26 | 12:08:00 | 2 |
| 11 | Pippo | 789012 | 2024-01-26 | 11:31:00 | 1 |
| 12 | Pippo | 789012 | 2024-01-26 | 19:50:00 | 2 |
| 12 | Minni | 345678 | 2024-01-26 | 09:31:00 | 1 |
| 13 | Minni | 345678 | 2024-01-26 | 15:30:00 | 2 |
----------------------------------------------------------------------------------------------
Pensavo di effettuare una query a monte e raggruppare tutti i numeriBadge e poi passarli alla query per selezionare uno ad uno, ma poi come fa a capire quando cambiare data ?
In sintesi, con la query non dinamica mi da questo risultato (provando solo sui record 1 e 2):
1 - PLUTO - 123456 - 2024-01-25 - Ora minima: 07:32:23 - Ora massima: 17:50:49
Se invece provo a renderla dinamica, con una query a monte che mi raggruppa il numero di badge:
Codice PHP:
SELECT * FROM tabella GROUP BY numeroBadge
Mi conteggia solo un risultato (perche' ovvimente passo solo un numero di badge), io dovrei riuscire ad arrivare a un risultato del genere:
1 - PLUTO - 123456 - 2024-01-25 - Ora minima: 07:32:23 - Ora massima: 17:50:49
2 - PLUTO - 123456 - 2024-01-27 - Ora minima: 07:05:00- Ora massima: 17:48:00
3 - PIPPO - 789012 - 2024-01-25 - Ora minima: 07:12:00- Ora massima: 17:00:00
4 - PIPPO - 789012 - 2024-01-26 - Ora minima: 07:05:00- Ora massima: 12:08:00
ecc...ecc...
Inserisco la query su cui sto ragionando:
Codice PHP:
$sqlTotale = "SELECT * FROM tabella WHERE anno = $anno AND mese = $mese GROUP BY numeroBadge";
$queryTotale = mysqli_query($connAvanzamento,$sqlTotale);
while($arrayTotale = mysqli_fetch_assoc($queryTotale)) {
$sql = "SELECT id, numeroBadge, cognomeNome, dataTransito, MIN(oraTransito) AS ora_minima, MAX(oraTransito) AS ora_massima FROM tabella WHERE dataTransito = '$arrayTotale[dataTransito]' AND numeroBadge = '$arrayTotale[numeroBadge]'";
$result = $connAvanzamento->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo "$row[id] - $row[cognomeNome] - $row[numeroBadge] - $row[dataTransito] - Ora minima: " . $row["ora_minima"] . " - Ora massima: " . $row["ora_massima"] . "<br>";
} else {
echo "Nessun risultato trovato";
}
}
Non saprei proprio come riuscire a raggruppare il numero di badge, pero' facendole passare il cambio di data.