約會

2014-12-04 51 views
0

我有一個表,約會之間制定出天持有以下信息約會

名稱,日期,類型

我想任命爲每間工作在幾天之差(任命)名稱。有些名字可能只有1個約會,其他的可能有50個。我想要的是每次約會之間的平均天數。

我試過內部連接,創建一個臨時表,並在StackOverflow上使用沒有答案的結束,但似乎沒有工作。

我的最新版本是:

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

回答

2

你可以使用一個子查詢,計算日期 之間的差異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