2014-10-03 46 views
0

我有一個小問題與MySQL查詢,這是我的MySQL數據庫結構:做一個TIMESTAMPDIFF每個MySQL的行

表用戶

hid(PK) 

表格要求

id (PK), hid, word, time 

表點擊

id, rid (FK),time 

我應該得到的請求和其相關的點擊之間的平均時間...我已經試過,但我不知道它是否正常工作:

SELECT TIMESTAMPDIFF(SECOND,r.time,c.time) 
FROM requests r RIGHT JOIN clicks c ON r.id=c.rid 
WHERE r.hid='$hid' 

可能有人請告訴我,如果我做它是正確的,並解釋我爲什麼不是?我收到一些數字作爲查詢結果,但他們似乎並不正確

+2

是什麼r.time和c.time的數據格式?你在尋找什麼樣的輸出?幾秒鐘的時間? – andrew 2014-10-03 08:49:00

+0

兩列的數據類型?創建一個sql小提琴http://sqlfiddle.com/ – diEcho 2014-10-03 08:58:06

+0

小費:使用'MICROSECOND'作爲你需要指定的單位。 – diEcho 2014-10-03 09:22:56

回答

0

如果你想得到平均時間,你忘了在你的查詢中使用它(除了忘記「平均值「結果)。

試試這個:

SELECT AVG(TIMESTAMPDIFF(SECOND,r.time,c.time)) as avg_secs_diff 
FROM requests r RIGHT JOIN clicks c ON r.id=c.rid 
WHERE r.hid='$hid' 
GROUP BY r.hid 
+0

是的,對不起,我忘記了寫AVG函數,但查詢的其他部分是對的嗎? – CapitanFindus 2014-10-03 09:01:01

+0

試試我的,看看你自己。我建議創建臨時表/數據,只有您控制這些值,並查看您是否始終得到正確的(預期的)結果。我很自信,我的回答是正確的:) – Kleskowy 2014-10-03 09:09:30

+0

對不起,也許我不清楚。您的查詢只返回1行,我想要做的是:對於每個請求,都有(並非總是)關聯的點擊(關係爲r.id = c.rid)。 對於每個有關聯點擊的請求,我必須得到請求時間和請求點擊時間之間的平均時間差。但是,謝謝你的回答:) – CapitanFindus 2014-10-03 09:14:07