1
我使用cookie来跟踪网站流量,然后将其写入数据库。每日页面比例MySQL查询
我想获取我的着陆页index.php和所有其他页面在图表中显示的平均值。
我正在努力与MySQL查询的语法。
我想查询2个值:$ row-> day和$ pageRatio,并显示过去30天的这些值。
我的数据库包含一个表称为tracking
具有以下字段:ID,CID,referrerDomain,引荐,网页,IP,reverseIP,的userAgent,郎,日
页字段包含网页名称,例如: index.php文件,other.php等
$sql = "SELECT (
SELECT COUNT(`page`) FROM `tracking`
WHERE `page` = 'index.php'
AND DISTINCT(`date`)
GROUP BY DATE(`date`)) AS indexCount,
(
SELECT COUNT(`page`) FROM `tracking`
WHERE `page` != 'index.php'
AND `date`
BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY)
AND NOW()
GROUP BY DATE(`date`)) AS otherPageCount,
DATE(`date`) AS day
FROM `tracking`
WHERE `date`
BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY)
AND NOW()
GROUP BY DATE(`date`)";
$sqlprep = $conn->prepare($sql);
if($sqlprep->execute()) {
$completedAmount = 0;
while($row = $sqlprep->fetch(PDO::FETCH_OBJ)){
$pageRatio = $row->indexCount/$row->otherPageCount;
echo "['" . $row->day . "', " . $pageRatio . "],\n";
}
}
我找到的解决方案是一个公认的答案在这里:How do I combine these 3 queries into one MySQL query?
SELECT DATE(`date`),
COUNT(`page`) AS indexCount,
SUM(`page` = 'index.php') as idx_count,
SUM(`page` <> 'index.php') as not_idx_count
FROM `tracking`
WHERE `date` BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY) AND NOW()
GROUP BY DATE(`date`)
节目需要创建表语句和示例数据甚至使用sqlfriddle这个.. –
@RaymondNijland我已经编辑我的问题,包括结构。这非常简单。 – Grant
让我们从你得到的(第一个)错误开始。 – geomagas