그래, 나는 그것에 순찰 할 것이다 : 나는 데이터베이스에있는 것보다 더 나은 코더이고, "모범 사례"에 대한 생각이 SQL 쿼리에서 "간단한"계산의 주제에 대해 어디에 있는지 궁금하다. 이 MySQL 예제와 같은 코드 (필자는 작성하지 않았지만 유지 관리해야합니다!)-사용자 이름을 반환하고 사용자는 마지막 이벤트 기준으로 연령을 지정합니다.
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
...
코드에서 "무거운"리프팅을 수행하는 것과 비교 :
질문:
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
암호:
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.";
나는 이와 같은 간단한 경우에 큰 차이를 만들지 않을 것이라고 확신하지만 (첫 번째 질문과 같이 쿼리를 변경해야 할 때 공포의 오싹한 느낌을 제외하고는) 찾고 있습니다.
감사!