同じテーブル内の 2 つの値を比較して、違いがあるかどうかを確認しようとしています。現在、cms_statistics_pages テーブルには 1485 のレコードがありますが、次のクエリの場合:
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
..解雇されると、次の結果が得られます。
identifier hits hits_yesterday growth
index 13395 13395 0
siden-er-under-opdatering 638 638 0
vores-historie 0 3 0
これは私の目的には正しくありません。次に、変更した場合:
AND DATE(csp1.datetime) = '2012-07-20'
どのレコードとも一致しない日付まで
AND DATE(csp1.datetime) = '2012-07-21'
私の結果は次のようになります。
identifier hits hits_yesterday growth
index 0 141 0
siden-er-under-opdatering 0 29 0
vores-historie 0 3 0
ヒットは正しいので、両方の結合にデータが含まれている場合、クエリがレコードを複数回カウントするかどうか疑問に思っています。
cms_pages のデータ例:
pageID sectionID templateID 識別子 デフォルトのタイトル exclude_title 1 1 1 index 1 SiteTech Framework 2012 へようこそ
cms_statistics_pages のデータ例:
statID フロントエンド バックエンド pageID sectionID パネル datetime 1 0 1 34 6 管理者 2012-07-17 12:34:14