2015-07-20 67 views
0

我知道的基本知識,當涉及到mysqli的查詢,但我遇到了下列麻煩:的mysqli - 使用平均,總和,組由兩個表

我有一個大的表稱爲caseStatistics與下面列:

idSchool(ID爲學校),timeReported(UNIX時間戳),timeRead(UNIX時間戳),timeSolved(UNIX時間戳)

我還有一個大的表稱爲學校有以下的列:

idSchool(ID爲學校),(學校的名稱)

從這兩個表,我想輸出學校名稱,總案例,運營商對案件作出回覆的時間(報告後)以及案件發生時間(報告後)的平均時間, 。我還需要將結果按學校名稱分組。

所以應該輸出是這樣的:

名稱:BlaBlaSchool

案件總數:49

Avarage響應時間:5小時

Avarage解決時間:16小時

(每所學校)

我不需要從UNIX轉換爲天,小時,分鐘等援助,只有mysqli的查詢。任何幫助非常感謝,謝謝!

回答

0

所有你需要做的就是添加的功能集成到列列表中的SELECT語句:

SELECT 
    s.`name`, 
    COUNT(*) AS totalCases, 
    AVG(cs.`timeRead` - cs.`timeReported`) AS avgRespond, 
    AVG(cs.`timeSolved` - cs.`timeReported`) AS avgSolved 
FROM `caseStatistics` AS cs 
LEFT JOIN `school` AS s ON s.`idSchool` = cs.`idSchool` 
GROUP BY s.`name` 

可以使用HAVING關鍵字以限制使用聚合值(類似於WHERE)的結果。此外,請務必查看:https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html

+0

謝謝您的回覆。事情是「名字」在另一張名爲「學校」的表中。因此,我必須將「caseStatistics」中的idSchool與「school」中的idSchool進行比較以獲取名稱。查詢將如何看待? –

+0

在這種情況下,您將需要一個'JOIN'。看到我更新的答案。 – Siphon

+0

在這裏看起來不錯,除了「SUM(*)AS totalCases」由於某種原因導致查詢失敗。如果我刪除它,查詢的其餘部分工作。任何線索可能導致什麼? –