2011-11-20 106 views
0

這裏是我的代碼,它完成了它的工作,但大部分是它不像我告訴它使用SQL語句那樣分組。另外我想知道如何創建一個自定義列,讓頂部爲'1',並從那裏開始編號。如何更改此代碼以正確地創建數據組?

btnLeaderBoardUpdate.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      String sql3 ="Select Name, Kills from honscores group by Name, Kills order by Kills DESC"; 
      ResultSet rs; 
      try { 
       st = conn.prepareStatement(sql3); 
       rs = st.executeQuery(); 
       table_2.setModel(DbUtils.resultSetToTableModel(rs)); 

      } catch(Exception e) { 
       JOptionPane.showMessageDialog(null, e); 
      } 

     } 
    }); 

這裏是輸出:(我想目前的兩叫做排名前增加一列,並將它從1)

Name   Kills 

Raknath  20 

AceFire6  15 

AceFire6  12 

AceFire6  10 

Raknath  9 

Q22   7 

Q22   5 

回答

2

爲了您的第一個問題,請參閱下文。

簡短的回答
使用此語句來代替:

Select Name, sum(Kills) from honscores group by Name order by Kills DESC 

龍答案
你不想按殺敵,但只能由名稱,並希望聚集的結果。

假設你有這樣的數據:

AceFire6 2 
AceFire6 2 
AceFire6 1 
AceFire6 3 
Raknath 1 
Raknath 1 

,並使用你的聲明,該數據庫將組AceFire6具有的2一個killsAceFire6具有的1一個kills值的所有值,所有的值,等等,然後選擇殺敵數量。

所以在最後,你會得到這樣的結果:

AceFire6 3 
AceFire6 2 
AceFire6 1 
Raknath 1 

你需要的是總結的殺死了,不管每人有多少人 - 我認爲 - 遊戲。

對於你的第二個問題(行數)見this答案的另一個問題。

編輯:
好了,這樣的事情應該工作(不能保證,我沒有測試語句):

SELECT @rn:[email protected]+1 AS rank, Name, kills 
FROM (
    Select Name, sum(Kills) as kills from honscores group by Name order by Kills DESC 
) t1, (SELECT @rn:=0) t2; 

快樂FPS-ING ... :)

+0

謝謝,我會試試這個:) – AceFire6

+0

這就像我想要的那樣工作:D非常感謝! – AceFire6

+0

沒問題,很高興我可以幫忙... :) – LeChe

0

嘗試這樣的:

// first query 
SET @ranked = 0; 
// second query 
SELECT @ranked:[email protected]+1 ranked, name, kills FROM honscores 
GROUP BY name, kills 
ORDER BY ranked ASC; 

而作爲@LeChe Saied如何操作,您可以使用SUM(kills)在您的字段列表以獲得每個名稱的總殺傷力。

SELECT @ranked:[email protected]+1 ranked, 
     name, 
     SUM(kills) kills FROM honscores, (SELECT @ranked:=0) t2 
GROUP BY name 
ORDER BY ranked ASC; 
+0

我認爲在他的代碼中,他會在實際的'SELECT'之前遇到'SET'問題 - 我猜他是想要一個語句。 :) – LeChe

+0

我編輯了最後一段代碼,所以只有一個sql查詢 – Cyclonecode