Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的选择产生了什么?_Php_Mysql_Sql - Fatal编程技术网

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有什么问题吗?如果是的话,是什么?