Oke, saya akan mengatasinya: Saya pembuat kode yang lebih baik daripada saya di basis data, dan saya bertanya-tanya di mana pemikiran tentang "praktik terbaik" terletak pada subjek melakukan perhitungan "sederhana" dalam kueri SQL vs. di kode, seperti contoh MySQL ini (saya tidak menulisnya, saya hanya harus memeliharanya!) - Ini mengembalikan nama pengguna, dan usia pengguna pada peristiwa terakhir.
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
...
Dibandingkan dengan melakukan "lifting" kode:
Pertanyaan:
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
kode:
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.";
Saya cukup yakin dalam kasus sederhana seperti ini tidak akan membuat banyak perbedaan (selain perasaan ngeri ketika saya harus membuat perubahan pada pertanyaan seperti yang pertama), tapi saya pikir itu membuatnya lebih jelas apa yang saya ' Saya sedang mencari.
Terima kasih!