2012-09-02 23 views
0

我有以下表格:如何通過在mysql中獲取組的總和

球迷

id, id_page, number_of_fans, created_at

此表有許多相同的id_page但在created_at

不同頁碼

id, id_facebook, id_keyword, is_processed (0/1)

關鍵字

id, keyword, category

我嘗試/設法子查詢,但我沒有得到我想要的結果,有時查詢是由於其複雜性很慢。

我想結果:

  1. 我會得到的最新(created_at) - (返回從每頁表格fans只有1行) - number_of_fansfans表的頁面,並獲得所有的總和number_of_fans按組由keyword
  2. 我會keyword
  3. 讓所有的頁面組,我將keyword其中is_processed = 1
  4. 得到所有的網頁組210

如何將1,2,3的結果與MySQL中的1個查詢結合起來?

謝謝。

問候, bhadz

+4

http://whathaveyoutried.com? – alfasin

+0

除非您顯示樣本數據和樣本輸出,否則沒有人能夠理解這種方式。 – ClearLogic

回答

0

您正在尋找的groupwise maximumFans表:它可以從頁面分組表,並選擇最大created_at值可以發現,這是再加入回Fans表從該最大記錄中獲得其他列:

SELECT Keyword.keyword, 
     SUM(Fans.number_of_fans) fans_of_all_pages, 
     SUM(IF(Page.is_processed,Fans.number_of_fans,0)) fans_of_processed_pages 
FROM  Fans NATURAL JOIN (
      SELECT id_page, MAX(created_at) AS created_at 
      FROM  Fans 
      GROUP BY id_page 
     ) t 
    JOIN Page ON Page.id = Fans.id_page 
    JOIN Keyword ON Keyword.id = Page.id_keyword 
GROUP BY Keyword.id 
+0

嗨eggyal,謝謝你的答案。這就是我正在尋找的。 真的很感激。 – bhadz