约会

问题描述:

我有一个表,约会之间制定出天持有以下信息约会

名称,日期,类型

我想任命为每间工作在几天之差(任命)名称。有些名字可能只有1个约会,其他的可能有50个。我想要的是每次约会之间的平均天数。

我试过内部连接,创建一个临时表,并在*上使用没有答案的结束,但似乎没有工作。

我的最新版本是:

SELECT A.Name, A.Date, (B.Date - A.Date) AS timedifference 
FROM Appointments A CROSS JOIN Appointments B 
WHERE B.Name IN (SELECT MIN(C.Date) FROM Appointments C WHERE C.Date > A.Date) 
ORDER BY A.Name ASC 

但是,超时我的网页。

任何人都可以帮忙吗?

感谢, 克莱尔

+0

所以日期是UNIXTIME? – Strawberry 2014-12-04 10:34:13

+0

如果您喜欢,请考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry 2014-12-04 10:35:08

+0

日期为mysql中的DATE格式,我非常抱歉,但我不知道如何执行DDL和/或sqlfiddle。 下面是想什么,我实现一个例子: 约翰·史密斯2014年1月3日理发 约翰·史密斯18/3/2014 BeardTrim 约翰·史密斯2014年6月4日理发 约会1之间的天数2 17天之间,2和3之间19天,所有约会之间的平均时间18天 – Claire 2014-12-04 10:43:40

你可以使用一个子查询,计算日期 之间的差异UNIX_TIMESTAMP,然后从秒name转换为天。

SELECT (SELECT (Unix_timestamp() - Sum(Unix_timestamp(`date`))/Count(*))/
       60/60/24 
     FROM `appointments` 
     WHERE `name` = `ap`.`name` 
     GROUP BY `name`) AS `daydiff`, 
     `ap`.`name` 
FROM `appointments` `ap` 
GROUP BY `name` 

看看这个SQLFiddle: http://sqlfiddle.com/#!2/85c19/7

+0

谢谢@丹Revah - 这是一个非常愚蠢的问题,但我怎么得到结果显示在PHP中? 对不起,要求提问 – Claire 2014-12-04 10:58:07

+0

与您运行其他自定义查询相同。创建与服务器的连接,运行查询并获取结果。 http://php.net/manual/en/mysqli-result.fetch-row.php – DanR 2014-12-04 11:00:47

+0

@Claire此外,如果这个答案帮助你。你应该接受它作为正确答案,点击答案左上角附近的V图标。 – DanR 2014-12-04 11:03:06