Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 计算/检查mysql表中条目的第一个实例_Php_Mysql - Fatal编程技术网

Php 计算/检查mysql表中条目的第一个实例

Php 计算/检查mysql表中条目的第一个实例,php,mysql,Php,Mysql,我有一个类似的表,它跟踪一个用户和一个日期。我需要找到在所选日期发生的用户首次输入的数量。这个表将包含大量的数据,这就是为什么我希望依靠一个查询来处理它,而不是一堆PHP循环 i、 e.2013年11月10日,用户1访问过,但不是第一次,因此返回0 2013年10月10日,用户1和2首次访问,因此返回2 显然,使用一个简单的查询可以计算指定日期的条目数,但是什么方法可以让我只在用户id不在前一行时进行计算呢 该表是按日期排序的,这意味着最近的日期的id不应小于较旧的日期 有什么想法吗??谢谢 按

我有一个类似的表,它跟踪一个用户和一个日期。我需要找到在所选日期发生的用户首次输入的数量。这个表将包含大量的数据,这就是为什么我希望依靠一个查询来处理它,而不是一堆PHP循环

i、 e.2013年11月10日,用户1访问过,但不是第一次,因此返回0 2013年10月10日,用户1和2首次访问,因此返回2

显然,使用一个简单的查询可以计算指定日期的条目数,但是什么方法可以让我只在用户id不在前一行时进行计算呢

该表是按日期排序的,这意味着最近的日期的id不应小于较旧的日期


有什么想法吗??谢谢

按用户查找所有首次日期:

  id          | user_id        |      date_tracked
---------------------------------------------
 1001         |  1             | 10-10-2013
 1002         |  2             | 10-10-2013
 1003         |  3             | 10-10-2013
 1004         |  1             | 10-11-2013
 1005         |  2             | 10-12-2013
第一次计数,每个日期:

SELECT user_id, MIN(date_tracked) AS first_date
FROM table
GROUP BY user_id

按用户查找所有首次日期:

  id          | user_id        |      date_tracked
---------------------------------------------
 1001         |  1             | 10-10-2013
 1002         |  2             | 10-10-2013
 1003         |  3             | 10-10-2013
 1004         |  1             | 10-11-2013
 1005         |  2             | 10-12-2013
第一次计数,每个日期:

SELECT user_id, MIN(date_tracked) AS first_date
FROM table
GROUP BY user_id

选择用户id,MINdate 从表\u名称
按用户id分组

选择用户id,MINdate 从表\u名称
按用户id分组作为一个,如果用户在第一天访问多次,您可以通过两种方式进行:

选择COUNTdistinct user\u id 来自用户t1 其中t1.date_tracked='2013-10-12' 而且不存在 选择1 来自用户t2 其中t2.user\u id=t1.user\u id t2.date\u tracked
作为一个,如果用户在第一天访问多次,可以通过两种方式进行:

选择COUNTdistinct user\u id 来自用户t1 其中t1.date_tracked='2013-10-12' 而且不存在 选择1 来自用户t2 其中t2.user\u id=t1.user\u id t2.date\u tracked
根据您的标签,我假设您也希望您的答案是php。 只有一个问题:date 10-10-2013不应该返回3吗? 无论如何,您可以尝试以下方法:

SELECT t.first_date, COUNT(*) AS nb
FROM (SELECT user_id, MIN(date_tracked) AS first_date
FROM table
GROUP BY user_id) t
GROUP BY t.first_date
$dbConnect=@mysqli\u connect$host、$user、$passor-die

<?php

?>

根据您的标签,我假设您也希望您的答案是php。 只有一个问题:date 10-10-2013不应该返回3吗? 无论如何,您可以尝试以下方法:

SELECT t.first_date, COUNT(*) AS nb
FROM (SELECT user_id, MIN(date_tracked) AS first_date
FROM table
GROUP BY user_id) t
GROUP BY t.first_date
$dbConnect=@mysqli\u connect$host、$user、$passor-die

<?php
作为对菲利佩的回应

也许这更合适

@mysqli_select_db($dbConnect, $dbname) or die();
$query = "SELECT id FROM tablename WHERE date_tracked = '$searchDate' AND (SELECT COUNT(id) FROM tablename WHERE date_tracked < '$searchDate')=0";
$queryResult = @mysqli_query($dbConnect, $query) or die();
$rowCount = mysqli_num_rows($queryResult);
echo $rowCount . "<br/>";

mysqli_close($dbConnect);
作为对菲利佩的回应

也许这更合适

@mysqli_select_db($dbConnect, $dbname) or die();
$query = "SELECT id FROM tablename WHERE date_tracked = '$searchDate' AND (SELECT COUNT(id) FROM tablename WHERE date_tracked < '$searchDate')=0";
$queryResult = @mysqli_query($dbConnect, $query) or die();
$rowCount = mysqli_num_rows($queryResult);
echo $rowCount . "<br/>";

mysqli_close($dbConnect);

我喜欢这种格式化方式,但如果用户在同一天多次登录,这将无法正常工作。如果他们在同一天登录两次或更多次,您希望他们计算为1?无论他们是否多次登录,只需检查他们在整个数据库中第一次登录的情况。这是检查他们访问的第一个日期,如果他们一天访问超过一次,则不会返回正确的ID。我喜欢这种格式,但如果用户在同一天登录超过一次,则不会延迟。如果他们在同一天登录两次或以上,您希望他们计为1?无论他们是否登录超过一次,它只需要在他们第一次登录整个数据库时进行检查。这是检查他们访问的第一个日期,如果他们一天访问超过一次,则不会返回正确的ID。是的。我想我也更喜欢这个。我用另一个例子更新了我的答案。是的。我想我也更喜欢这个。我用另一种方法和例子更新了我的答案。