[MySQL] Topliste

Hallo.
Ich muss derzeit eine Topliste programmieren, welche mit MySQL arbeitet.
Die Topliste soll nach Kills & Deaths soritert werden.

Ich habe mir gedacht, sortierst du einfach erst die Kills DESC und danach die Deaths ASC. Jedoch geht dies nicht.

Jemand eine andere Idee?

Mein aktueller Code:
Java:
	public List<UUID> getTopTen() {
		List<UUID> top = new ArrayList<>();
		PreparedStatement st = null;
		ResultSet rs = null;
		try {
			st = super.getConnection().prepareStatement("SELECT * FROM stats ORDER BY kills DESC");
			st = super.getConnection().prepareStatement("SELECT * FROM stats ORDER BY deaths ASC");
			rs = st.executeQuery();
			rs.beforeFirst();
			for(int i = 0; i < 10; i++) {
				rs.next();
				top.add(UUID.fromString(rs.getString("uuid")));
			}
			return top;
		} catch (SQLException e) {
			e.printStackTrace();
			return top;
		} finally {
			super.closeRessources(rs, st);
		}
	}

(Nochmal kurz zum Verständnis: Es stehen zwei Leute mit 10 Kills in der Toplist. Einer hat jedoch 50 Tode, und der andere nur 40. Dann soll der mit 40 Toden vor der Person mit 50 Toden stehen.)

Schönen Abend noch,
Summerfeeling.
 
Das ist eine Zuweisung, sodass dein erstes Stament "verloren" geht.

Java:
st = super.getConnection().prepareStatement("SELECT * FROM stats ORDER BY kills DESC");
st = super.getConnection().prepareStatement("SELECT * FROM stats ORDER BY deaths ASC");

Habe das zwar nicht MySQL getestet, sollte aber prinzipell funktionieren. Sollte ein Fehler auftreten, dann musst du die Exception nennen ... sowas wie "Jedoch geht dies nicht." hilft nicht weiter.

Code:
select kills-deaths as score from stats order by score DESC
 
Du solltest nicht mit SELECT * arbeiten sondern immer die Attribute angeben die du wirklich brauchst.

Ansonsten must du einfach nur alles in einem Statement zusammen fassen.

SELECT 'name' FROM stats ORDER BY kills ASC, death DESC

Gruß

Claus
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben