Php 我的选择产生了什么?
我的Php 我的选择产生了什么?,php,mysql,sql,Php,Mysql,Sql,我的选择有什么问题吗?它应该计算每天不同IP的数量,然后计算总和。以下是查询: SELECT SUM(NumIpsPerDay) AS user_hits FROM (SELECT DATE(tracking.timestamp) AS DayTrackCount, COUNT(DISTINCT tracking.ip) AS NumIpsPerDay FROM USER, tracking GROUP BY DATE(tracking.tim
选择有什么问题吗?它应该计算每天不同IP的数量,然后计算总和。以下是查询:
SELECT SUM(NumIpsPerDay) AS user_hits
FROM
(SELECT DATE(tracking.timestamp) AS DayTrackCount,
COUNT(DISTINCT tracking.ip) AS NumIpsPerDay
FROM USER,
tracking
GROUP BY DATE(tracking.timestamp)
WHERE tracking.user_id = $user_id
GROUP BY $user_id LIMIT 1)
我看着它,我想它可能是日期
我的选择有什么问题吗?试试这个:
SELECT SUM(NumIpsPerDay) AS user_hits
FROM
(
SELECT DATE(tracking.timestamp) AS DayTrackCount,
COUNT(DISTINCT tracking.ip) AS NumIpsPerDay
FROM user, tracking
WHERE tracking.user_id = $user_id
GROUP BY DATE(tracking.timestamp)
) x
SELECT SUM(tab.NumIpsPerDay) AS user_hits
FROM
(SELECT DATE(tracking.timestamp) AS DayTrackCount,
COUNT(DISTINCT tracking.ip) AS NumIpsPerDay
FROM USER, tracking
WHERE tracking.user_id = $user_id
GROUP BY DATE(tracking.timestamp)) as tab
SELECT SUM(NumIpsPerDay) AS user_hits
FROM (SELECT DATE(tracking.timestamp) AS DayTrackCount,
COUNT(DISTINCT tracking.ip) AS NumIpsPerDay
FROM tracking
WHERE tracking.user_id = $user_id
GROUP BY DATE(tracking.timestamp
) t
GROUP BY $user_id;
为什么要输入子查询日期(tracking.timestamp)?是的。您正在用户
和跟踪
之间进行交叉联接
(笛卡尔积)。但是,您没有使用user
表中的任何字段。你可能根本不需要这张桌子
试试这个:
SELECT SUM(tab.NumIpsPerDay) AS user_hits
FROM
(SELECT DATE(tracking.timestamp) AS DayTrackCount,
COUNT(DISTINCT tracking.ip) AS NumIpsPerDay
FROM USER, tracking
WHERE tracking.user_id = $user_id
GROUP BY DATE(tracking.timestamp)) as tab
SELECT SUM(NumIpsPerDay) AS user_hits
FROM (SELECT DATE(tracking.timestamp) AS DayTrackCount,
COUNT(DISTINCT tracking.ip) AS NumIpsPerDay
FROM tracking
WHERE tracking.user_id = $user_id
GROUP BY DATE(tracking.timestamp
) t
GROUP BY $user_id;
此外:
子查询没有别名
不需要限制
where
子句位于groupby
你为什么会认为有什么不对劲?什么不起作用?你得到了什么结果?你期待什么?你可能想编辑你的问题-你的选择产生了什么吗?如果是这样的话,它做了什么不应该做的?我检查了NumIpsPerDay,没有任何显示。。。所以我不太确定是否正常,在分组之前应该在哪里使用。select有什么问题吗?如果是的话,是什么?