Ok, mi occuperò di questo: sono un programmatore migliore di quello che trovo nei database, e mi chiedo dove le considerazioni sulle "migliori pratiche" si trovano sull'argomento di fare calcoli "semplici" nella query SQL vs nel codice, come questo esempio di MySQL (non l'ho scritto, devo solo mantenerlo!) - Questo restituisce il nome utente, e gli utenti invecchiano a partire dall'ultimo evento.
SELECT u.username as user,
IF ((DAY(max(e.date)) - DAY(u.DOB)) < 0 ,
TRUNCATE(((((YEAR(max(e.date))*12)+MONTH(max(e.date)))
-((YEAR(u.DOB)*12)+MONTH(u.DOB)))-1)/12, 0),
TRUNCATE((((YEAR(max(e.date))*12)+MONTH(max(e.date))) -
((YEAR(u.DOB)*12)+MONTH(u.DOB)))/12, 0)) AS age
FROM users as u
JOIN events as e ON u.id = e.uid
...
Rispetto al sollevamento "pesante" nel codice:
Query:
SELECT u.username, u.DOB as dob, e.event_date as edate
FROM users as u
JOIN events as e ON u.id = e.uid
code:
function ageAsOfDate($birth, $aod)
{ //expects dates in mysql Y-m-d format...
list($by,$bm,$bd) = explode('-',$birth);
list($ay,$am,$ad) = explode('-',$aod);
//Insert Calculations here
...
return $Dy; //Difference in years
}
echo "Hey! ". $row['user'] ." was ". ageAsOfDate($row['dob'], $row['edate']) . " when we last saw him.";
Sono abbastanza sicuro che in un caso semplice come questo non farebbe molta differenza (a parte il sentimento strisciante di orrore quando devo apportare modifiche a domande come la prima), ma penso che sia più chiaro quello che sto cercando.
Grazie!