동일한 테이블에서 두 값을 비교하려고하고 차이가 있는지 확인하려고합니다. 는 지금, 나는 cms_statistics_pages 테이블에 1,485 레코드가 있지만, 아래의 쿼리 때 내 목적을 위해 정확하지MySQL은 같은 테이블에서 두 값을 비교합니다.
identifier hits hits_yesterday growth
index 13395 13395 0
siden-er-under-opdatering 638 638 0
vores-historie 0 3 0
:
SELECT
cp.identifier,
COUNT(csp1.statID) AS hits,
COUNT(csp2.statID) AS hits_yesterday,
IF(COUNT(csp1.statID)>COUNT(csp2.statID),1,0) AS growth
FROM cms_pages cp
LEFT JOIN cms_statistics_pages csp1
ON csp1.pageID = cp.pageID
AND DATE(csp1.datetime) = '2012-07-20'
LEFT JOIN cms_statistics_pages csp2
ON csp2.pageID = cp.pageID
AND DATE(csp2.datetime) = '2012-07-19'
GROUP BY cp.identifier
..is 해고, 나는이 결과를 얻을 수 . 그럼 내가 변경하는 경우 :
identifier hits hits_yesterday growth
index 0 141 0
siden-er-under-opdatering 0 29 0
vores-historie 0 3 0
지금 히트가 올바른지, 그래서 ':
AND DATE(csp1.datetime) = '2012-07-20'
레코드
일치하지 않습니다 날짜에 내 결과가 지금과 같은AND DATE(csp1.datetime) = '2012-07-21'
두 조인에 일부 데이터가 들어있을 때 쿼리가 레코드를 여러 번 계산하는지 궁금합니다. cms_pages에서
예 데이터 : cms_statistics_pages에서
pageID sectionID templateID identifier default title exclude_title 1 1 1 index 1 Welcome to SiteTech Framework 2012
예 데이터 :
statID frontend backend pageID sectionID panel datetime 1 0 1 34 6 admin 2012-07-17 12:34:14