2009-12-08 26 views
0

我正在使用PHP創建查詢以從MySQL數據庫中提取結果,查詢結果將輸出到Excel文檔。MySQL MAX顯示關聯數據的錯誤結果

下面是該查詢:

$sql = "SELECT node, port, MAX(utiltx), MAX(utilrx), time, hour(time), day(time), month(time) FROM intfstats WHERE node IN('$separated') AND year(time)=$year AND month(time)=$month AND port IN('$portsep') GROUP BY node,port,day(time);"; 

我想查詢工作正常,但它總是顯示時間爲午夜(這是第一次在timestamp列)。

目標是查詢的產品是白天的最大利用率rx和tx以及發生最大吞吐量的時間。

我將不勝感激任何幫助,因爲我花了很長時間對它沒有足夠的MySQL查詢知識來拉它!

+0

非常好 - 非常感謝您的幫助! – daviiies 2009-12-14 09:26:57

回答

0

當你在給定的日子裏有2 +記錄具有相同的最大值時,你如何處理破壞者?

SELECT t.node, 
     t.port, 
     t.utiltx, 
     t.utilrx, 
     t.time, 
     HOUR(t.time), 
     DAY(t.time), 
     MONTH(t.time) 
    FROM INTFSTATS t 
    JOIN (SELECT is.node, 
       is.port, 
       MAX(is.utiltx) 'mutiltx', 
       MAX(is.utilrx) 'mutilrx', 
       DAY(is.time) 'dd', 
       MONTH(is.time) 'mon', 
       YEAR(is.time) 'yy' 
      FROM INTFSTATS is 
     WHERE is.node = $node 
      AND is.port = $port 
     GROUP BY is.node, 
       is.port, 
       DAY(is.time), 
       MONTH(is.time), 
       YEAR(is.time)) x ON x.node = t.node 
           AND x.port = t.port 
           AND x.mutiltx = t.utiltx 
           AND x.mutilrx = t.utilrx 
           AND x.dd = DAY(t.time) 
           AND x.mon = MONTH(t.time) 
           AND x.yy = YEAR(t.time) 
WHERE x.yy = $year 
    AND x.mon = $mon 
+0

我發現在處理數十萬條記錄時,嵌套選擇在MySQL中非常緩慢。 – user103219 2009-12-08 17:04:03

+0

如果你有不同的方式來獲得每件小工具的最大價值,那麼我每天都在耳邊。如果數據模型無法改變以適應需求,那麼可以考慮PostgreSQL? – 2009-12-08 17:09:20

+0

非常感謝您的快速回答:) 鑑於領帶破碎機的問題,這不是我在查詢中考慮過的事實。 我一直在嘗試您提供的解決方案,並且我確定它幾乎存在但我遇到了一個錯誤: 「您的SQL語法有錯誤;請檢查與您的MySQL相對應的手冊服務器版本的正確語法使用附近'x ON x.node = t.node AND x.port = t.port'在第22行「 你知道可能是什麼原因造成這種情況嗎? – daviiies 2009-12-09 09:02:45