Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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 将半重复的sql结果分组在一起_Php_Html_Mysql_Database - Fatal编程技术网

Php 将半重复的sql结果分组在一起

Php 将半重复的sql结果分组在一起,php,html,mysql,database,Php,Html,Mysql,Database,我完全不懂这个,所以请记住:) 我有一个MySQL选项卡,其中包含以下数据: ID START END UserID 1 2017-03-16 2017-03-30 0 2 2017-05-01 2017-08-31 0 3 0000-00-00 0000-00-00 0 4 2017-03-31 2017-03-31 0 5 2017-03-09 2017-03-28 1 6 2017-03-09 2017-03-10

我完全不懂这个,所以请记住:)

我有一个MySQL选项卡,其中包含以下数据:

ID   START        END       UserID
1   2017-03-16  2017-03-30  0
2   2017-05-01  2017-08-31  0
3   0000-00-00  0000-00-00  0
4   2017-03-31  2017-03-31  0
5   2017-03-09  2017-03-28  1
6   2017-03-09  2017-03-10  1
7   2017-03-09  2017-03-10  2
8   2017-03-09  2017-03-09  2
9   2017-03-10  2017-03-11  1
10  2017-03-10  2017-03-11  2
现在我使用MySQL查找起始列和结束列的匹配项:

SELECT t.* FROM dates t JOIN (SELECT Start, End, UserID, count(*) AS NumDuplicates FROM dates GROUP BY Start, End having NumDuplicates > 1) TSUM on t.Start = tsum.Start and t.End = tsum.End
我使用foreach和echo用PHP打印它。得到这个结果:

ID   START        END       UserID
6   2017-03-09  2017-03-10  1
7   2017-03-09  2017-03-10  2
9   2017-03-10  2017-03-11  1
10  2017-03-10  2017-03-11  2
这正是我需要的。 在这个结果中,您可以看到ID6和ID7是匹配的,而ID9和ID10是匹配的。 我现在需要的是一个明确的方法;以某种方式将他们分开,这样很明显比赛是6-7和9-10。它们之间的简单HR是enoug,或一行中的匹配行,如下所示:

ID   START        END       UserID
6   2017-03-09  2017-03-10  1
7   2017-03-09  2017-03-10  2
<hr/>
9   2017-03-10  2017-03-11  1
10  2017-03-10  2017-03-11  2
ID   START        END       UserID
6 & 7   2017-03-09  2017-03-10  1 & 2
9 & 10  2017-03-10  2017-03-11  1 & 2

任何帮助都将不胜感激;谢谢

尝试下面的代码,这将对您有所帮助。 这将产生如第二个场景所示的输出

 SELECT t.Start, t.End,
       GROUP_CONCAT( t.ID SEPARATOR '&') AS ID,
       GROUP_CONCAT( t.UserID SEPARATOR '&') AS UserID
  FROM dates t 
  JOIN ( SELECT Start, End, UserID, COUNT(*) AS NumDuplicates 
           FROM dates
          GROUP BY Start, End 
         HAVING NumDuplicates > 1 ) AS TSUM
    ON t.Start = tsum.Start AND t.End = tsum.End
 GROUP BY Start, End 

sqlfiddle演示Hey Sagar;非常感谢。但这给了我0个结果:(