Okay, ich komme damit klar: Ich bin ein besserer Programmierer als ich es von Datenbanken her kenne, und ich frage mich, wo die Überlegungen zu "Best Practices" zum Thema "einfache" Berechnungen in der SQL-Abfrage im Vergleich zu "in" liegen der Code, wie dieses MySQL-Beispiel (ich habe ihn nicht geschrieben, ich muss ihn nur warten!) - Dies gibt den Benutzernamen und das Alter des Benutzers ab dem letzten Ereignis zurück.
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
...
Verglichen mit dem "schweren" Heben von Code:
Abfrage:
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.";
Ich bin mir ziemlich sicher, dass es in einem einfachen Fall wie diesem keinen großen Unterschied machen würde (abgesehen von dem schleichenden Gefühl des Grauens, wenn ich Änderungen an Abfragen wie der ersten vornehmen muss), aber ich denke, es macht klarer, was ich meine. Ich suche.
Vielen Dank!