MySQL Tabellen sortieren.

Cury

Aktives Mitglied
Hey,
Ich habe mir eine MySQL Tabelle angelegt mit 3 Spalten (UUID, Spielername, Punkte). Ich möchte jetzt die Punkte in einer Methode nach der Größe sortieren. Der größte wert oben, dann immer abnehmend. Wie kann man dies schaffen?
Mein Ziel ist dann, dass man im Spiel /stats machen kann und dann sehen kann welcher Platz man ist. Also der der die meisten Punkte hat ist Platz 1 usw..
Z.B. macht man /stats und dann steht dort: Deine Platzierung: 1
 

MoxxiManagarm

Top Contributor
Du könntest eine verschachtelte Abfrage machen, erst eine Abfrage auf den Spielernamen, also sowas
- Selektiere die Punkte des Eintrags mit dem aktuellen Spielernamen
- nehme die Punkte vom gefundenen Eintrag und zähle die Einträge n mit mehr Punkten
--> Deine Platzierung ist n + 1
 

mihe7

Top Contributor
Falls Deine Tabelle tab heißt:
SQL:
SELECT * FROM 
  (SELECT @r := @r+1 as pos, tab.* FROM tab, (SELECT @r := 1) tmp ORDER BY Punkte DESC) t
WHERE UUID = :uuid
 

Cury

Aktives Mitglied
wenn die Tabelle jetzt Punkte heißt:

public static int ranking(UUID uuid) {
try (PreparedStatement ps = MySQL.getConnection().prepareStatement("SELECT * FROM (SELECT @r := @r+1 as pos, punkte.* FROM punkte, (SELECT @r := 1) tmp ORDER BY Punkte DESC) WHERE `UUID` := uuid")) {
ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
 
Zuletzt bearbeitet:

Cury

Aktives Mitglied
Da gibt es aber einen Fehler:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE `UUID` := uuid' at line 1

at sun.reflect.GeneratedConstructorAccessor113.newInstance(Unknown Source)
[16:34:48 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[16:34:48 WARN]: at java.lang.reflect.Constructor.newInstance(Unknown Source)
[16:34:48 WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[16:34:48 WARN]: at com.mysql.jdbc.Util.getInstance(Util.java:382)
[16:34:48 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
[16:34:48 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
[16:34:48 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
[16:34:48 WARN]: at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
[16:34:48 WARN]: at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
[16:34:48 WARN]: at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
[16:34:48 WARN]: at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111)
[16:34:48 WARN]: at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2273)
[16:34:48 WARN]: at me.bluenitrox.stats.Kills.ranking(Kills.java:78)
[16:34:48 WARN]: at me.bluenitrox.commands.stats_Command.onCommand(stats_Command.java:26)
[16:34:48 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[16:34:48 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[16:34:48 WARN]: at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:646)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1115)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:950)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:26)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:53)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13)
[16:34:48 WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[16:34:48 WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634)
[16:34:48 WARN]: at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537)
[16:34:48 WARN]: at java.lang.Thread.run(Unknown Source)
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Da gibt es aber einen Fehler:
Ja, weil Du = :uuid und nicht := uuid schreiben musst. Außerdem musst Du die UUID auch mitgeben (ps.setString("uuid", uuid.toString());), bevor Du die Abfrage ausführst. Und executeQuery bringt jetzt auch nicht viel, wenn Du den Rückgabewert (ResultSet) nicht weiter verarbeitest.
 

Cury

Aktives Mitglied
Also muss ich einfach machen:

public static int ranking(UUID uuid) {
try (PreparedStatement ps = MySQL.getConnection().prepareStatement("SELECT * FROM (SELECT @r := @r+1 as pos, punkte.* FROM punkte, (SELECT @r := 1) tmp ORDER BY Punkte DESC) WHERE `UUID` = :uuid")) {
ps.setString("uuid", uuid.toString);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
 

mihe7

Top Contributor
Nein, schreib halt mal richtig ab: toString() und nicht toString. Außerdem wird die Methode nach wie vor immer -1 zurückgeben, weil Du einfach nur die Abfrage ausführst aber mit dem Ergebnis der Abfrage nichts anfängst.
 
K

kneitzel

Gast
Wie wäre es, wenn du dir einfach einmal paar JDBC und SQL Tutorials anschauen würdest? Wenn man versteht, was man da macht, dann steigen die Erfolgsaussichten deutlich.
 

Cury

Aktives Mitglied
SELECT Spielername, Punkte,
rank() OVER (ORDER BY Punkte DESC) Rang,
dense_rank() OVER (ORDER BY Punkte DESC) DenseRang
FROM Punkttabelle;

Wenn man diese sql query nimmt. Wir mache ich dann weiter. Da wird ja nicht die UUID übergeben
 
K

kneitzel

Gast
Um was geht es Dir genau? Wenn Du ein Spiel selbst entwickeln willst, dann setzt das voraus, dass Du Dir die dafür notwendigen Dinge aneignest.

Wenn du das nicht willst, dann kannst du daraus verzichten: kauf einfach ein vorhandenes Spiel und spiel es. Oder kauf dir eine Software, wo du ohne Programmieren etwas zusammen klicken kannst.

Aber selbst bei letzterem musst du Dich intensiv damit beschäftigen und lernen, wie es funktioniert...

Gewisse Grundlagen sind auch gerade bei Datenbanken wichtig. Grundkenntnisse sollte man haben, sonst ist eine Enttäuschung vorprogrammiert....
 

mihe7

Top Contributor
Das ist sehr löblich, erwarte aber nicht, dass in 3 Std. alles erklärt wird :) Ich würde sagen, nach einer Einführung von 3 Std. wirst Du einfache DML-Abfragen verstehen und schreiben können und die Grundlagen soweit kennen, dass Du Dir selbst komplexere Dinge erarbeiten kannst. Bei konkreten Verständnisfragen hilft Dir das Forum gerne.
 

Cury

Aktives Mitglied
In dem Tutorial wird die INSERT INTO, UPDATE, NULL WERTE, SCHLÜSSEL, DELETE, CREATE GROUP BY, ORDER BY, LIMIT, mathematische Operatoren, Daten Typen, spalten alias, WHERE erklärt.

Ich glaube das ist alles was ich für mein Problem brauche oder?
 

Cury

Aktives Mitglied
Ich habe jetzt einen Code erarbeitet. Allerdings ist da irgendwo ein Synatx Fehler, den ich nicht finden kann.

SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Kills DESC) pos FROM kills) WHERE UUID = ?
 

mihe7

Top Contributor
Du musst dem Subselect (SELECT *, ROW_NUMBER() OVER (ORDER BY Kills DESC) pos FROM kills) einen Namen geben:
SQL:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Kills DESC) pos FROM kills) t WHERE UUID = ?
 

Dukel

Top Contributor
Wieso eigendlich dieses Subquery? Wieso nicht die Window Funktion um das Where erweitern?

SQL:
SELECT Spielername, Kills,
rank() OVER (ORDER BY Kills DESC) Rang,
dense_rank() OVER (ORDER BY Kills DESC) DenseRang
FROM kills WHERE UUID = ?;

Ich würde mir noch angewöhnen kein * zu nutzen sondern die abzufragenden Spalten anzugeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N MySQL mit Strings Allgemeine Java-Themen 3
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
V Maven Maven ClassNotFoundException MySQL JDBC Treiber Allgemeine Java-Themen 1
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
R Praktikums Projekt Java vs MySQL Allgemeine Java-Themen 91
C JPA und mysql Allgemeine Java-Themen 3
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
J javaFX mySQL Allgemeine Java-Themen 3
B MySQL Eintrag erstellen Allgemeine Java-Themen 3
P MYSQL Datenbank Dump einspielen Allgemeine Java-Themen 1
F eclipse, texlipse, R und mysql Allgemeine Java-Themen 2
S WebApp MySQL Connection Loss Allgemeine Java-Themen 10
H Tablemodel und mysql Allgemeine Java-Themen 8
T Datumsformat für MySQL Allgemeine Java-Themen 4
S ANT mysql treiber einbinden Allgemeine Java-Themen 4
F Ärger mit mySQL Allgemeine Java-Themen 3
S Java Methode um Daten aus MySQL auslesen Allgemeine Java-Themen 11
S Excel in mySQL importieren Allgemeine Java-Themen 3
neurox Tutorial: Hibernate mit MySQL (erste Schritte) Allgemeine Java-Themen 34
M JAVA Timestamp aus Mysql Allgemeine Java-Themen 4
T MySQl Datenbank als Array ausgeben Allgemeine Java-Themen 11
hdi Applet, JavaScript, PHP, mySQL -> Was brauch ich? Allgemeine Java-Themen 3
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
H Daten aus MySQL datenbank auslesen und in ArrayList stecken Allgemeine Java-Themen 8
G mySQL und JTable Allgemeine Java-Themen 7
G MySql+Java+backup Allgemeine Java-Themen 23
I JAVA+ MySQL locales statement? Allgemeine Java-Themen 2
B Importieren in MySQL mit Java-Programm Allgemeine Java-Themen 15
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
G Mysql --> Datumsformat Allgemeine Java-Themen 7
C Umlaute mysql Allgemeine Java-Themen 3
V MySql db unter Java zum laufen bringen. Allgemeine Java-Themen 2
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
G Datum in MySQL Timestamp umwandeln? Allgemeine Java-Themen 10
G Daten aus MySQL-Datenbank an JFreeChart übergeben Allgemeine Java-Themen 3
G MySQL-Problem (LOAD DATA INFILE) Allgemeine Java-Themen 5
F Threadsicherheit von MySQL-Verbindungen Allgemeine Java-Themen 8
L APACHE POI PIVOT TABELLEN Allgemeine Java-Themen 4
C Aus MEHREREN Excel Tabellen bestimmte Zelle addieren Allgemeine Java-Themen 1
Meeresgott Kapselung Tabellen der Datenbank erzeugen. Allgemeine Java-Themen 7
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
D Mehrere String-Werte in eine Tabellen-Zelle schreiben Allgemeine Java-Themen 8
H2SO3- speichern von Daten in seeeeeehr großen Tabellen (nicht DB) Allgemeine Java-Themen 8
MQue über iBatis Tabellen erzeugen Allgemeine Java-Themen 4
R Tabellen inhalt mal vorhanden, mal nicht!?! Allgemeine Java-Themen 2
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
L allgemein Strings händisch in Liste sortieren Allgemeine Java-Themen 47
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
Willi.We Array sortieren Allgemeine Java-Themen 5
L ArrayList sortieren Allgemeine Java-Themen 2
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
Curtis_MC Collections Liste anhand mehrere Kriterien sortieren Allgemeine Java-Themen 6
B Java Mail: Emails sortieren? Allgemeine Java-Themen 5
G Liste (UsageStats) sortieren (Android) Allgemeine Java-Themen 5
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
P Wertepaare sortieren Allgemeine Java-Themen 3
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
T Collections ArrayList Sortieren Allgemeine Java-Themen 4
P Listen sortieren Allgemeine Java-Themen 1
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
S Verkettete (Teil)Liste sortieren ( rekursiv bis n) Allgemeine Java-Themen 2
K Strings sortieren: 2 Kritieren Allgemeine Java-Themen 5
B Algortihmus zum linearen Sortieren Allgemeine Java-Themen 1
K ArrayList sortieren Allgemeine Java-Themen 16
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
H Liste sortieren anhand optionalem Property Allgemeine Java-Themen 3
2 Mehrere Uhrzeiten Sortieren Allgemeine Java-Themen 2
B Counting Sort (Sortieren durch Zählen) Allgemeine Java-Themen 13
H Liste von Objekten generisch sortieren Allgemeine Java-Themen 0
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
K Sortieren nach Vorgabe Allgemeine Java-Themen 6
S Erste Schritte Arrayliste alphabetisch sortieren mit Eingabe Allgemeine Java-Themen 9
L Sortieren von "Map<String, Object>" Allgemeine Java-Themen 2
M Sortieren und Leerzeichen Allgemeine Java-Themen 11
W Array Indizes sortieren Allgemeine Java-Themen 16
D Sortieren von Liste zu unperformant Allgemeine Java-Themen 6
E Array alphabetisch sortieren Allgemeine Java-Themen 1
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
G Map nach key sortieren Allgemeine Java-Themen 14
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
Gossi Collections (Unbekannte) Liste Sortieren Allgemeine Java-Themen 10
S Int Values sortieren Allgemeine Java-Themen 7
S Sortieren nach Objekten Allgemeine Java-Themen 13
A 2D-array problem (sortieren) Allgemeine Java-Themen 6
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
D priority queue sortieren Allgemeine Java-Themen 10
G List<Person> sortieren Allgemeine Java-Themen 6
K Hashmap sortieren Allgemeine Java-Themen 6
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
M ArrayList<String>, String häufigkeit sortieren Allgemeine Java-Themen 4
J Wie sortieren? Allgemeine Java-Themen 11
T Liste sortieren Allgemeine Java-Themen 6
K Strings sortieren (knifflig) Allgemeine Java-Themen 7
B JTable nach Icon sortieren Allgemeine Java-Themen 6
C ArrayList (mit Objekten) sortieren Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben