Ciao a tutti
ho questo problema che non mi riesce di risolvere in nessuna maniera e non capisco il perche':
ho un db con due tabelle:
tabella 1:
contiene un campo con ore in formato HH:MM:SS e altri tre campi giorno, mese, anno in maniera univoca (una riga per giorno), per esempio:
ID 1 -> NOME COGNOME PINCO PALLINO -> ORE 08:30:00 -> GIORNO 02 -> MESE 01 -> ANNO 2024 -> MATRICOLA 522
tabella 2:
contiene un campo con ore in formato HH:MM:SS e altri tre campi giorno, mese, anno in maniera univoca ma qui puo' esserci piu' di un giorno, per esempio:
ID 1 -> NOME COGNOME PINCO PALLINO -> ORE 08:00:00 -> GIORNO 02 -> MESE 01 -> ANNO 2024 -> MATRICOLA 522
ID 2 -> NOME COGNOME PINCO PALLINO -> ORE 00:30:00 -> GIORNO 02 -> MESE 01 -> ANNO 2024 -> MATRICOLA 522
dovrei, unire i risultati della tabella 1 e della tabella 2 e mostrare i risultati in questo modo:
se arrivano dalla tabella 1, semplicemente l'orario cosi' com'e',
se arrivano dalla tabella 2 sommare i due record e mostrare la riga con la somma delle ore
per esempio:
TABELLA 1 -> NOME COGNOME PINCO PALLINO -> ORE 08:30:00 -> GIORNO 02 -> MESE 01 -> ANNO 2024 -> MATRICOLA 522
TABELLA 2 -> NOME COGNOME PINCO PALLINO -> ORE 08:30:00 -> GIORNO 02 -> MESE 01 -> ANNO 2024 -> MATRICOLA 522
per ottenere questo effetuo una query cosi' (e creo la relativa tabella html):
Codice PHP:
$sql = "SELECT tabella, id, cognomeNome, matricola, giorno, mese, anno, ore
FROM (
SELECT 'tabella 1' AS tabella, id, cognomeNome, matricola, giorno, mese, anno, ore AS ore
FROM tabella 1
UNION ALL
SELECT 'tabella 2' AS tabella, id, cognomeNome, matricola, giorno, mese, anno, SUM(ore) AS ore
FROM tabella 2
GROUP BY matricola, giorno, mese, anno
) AS combined
ORDER BY giorno, matricola";
$result = $connAvanzamento->query($sql);
if ($result->num_rows > 0) {
// RISULTATI
echo "<h2>Risultati delle due tabelle:</h2>";
echo "<table border='1'>";
echo "<tr><th>TABELLA</th><th>ID</th><th>matricola</th><th>giorno/mese/anno</th><th>ore</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>".$row["tabella"]."</td>";
echo "<td>".$row["id"]."</td>";
echo "<td>".$row["matricola"]." - ".$row["cognomeNome"]."</td>";
echo "<td>".$row["giorno"]."/".$row["mese"]."/".$row["anno"]."</td>";
echo "<td>".$row["ore"]."</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "Nessun risultato trovato";
}
// Chiusura della connessione
$connAvanzamento->close();
la query sembra funzionare, ma il risultato che ottengo non pare corretto, per quel che riguarda la somma della tabella 2:
Risultati delle due tabelle unite:
TABELLA 2 - MATRICOLA COGNOME NOME -> 522 PINCO PALLINO -> 02/01/2024 -> 83000
TABELLA 1 - MATRICOLA COGNOME NOME -> 522 PINCO PALLINO -> 02/01/2024 -> 08:30:00
Perche' nella somma della tabella 2, il risultato che ottengo non e' in formato hh:mm:ss ?
In realta' 83000 corrisponde a 8:30:00 ed e' corretto come come somma, e' sbagliata la formattazione.
Come mai e come posso risolvere ?
Grazie, ciao