Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

DB sortiert nicht richtig

Hallo zusammen...

Ich habe ein kleines Problem mit meiner Datenbank. Ich habe ein kleines Tippspiel errichtet mit PHP.Ich will nun die Rangliste nach Punkten sortieren und zwar soll die höchste Punktzahl oben stehen. Ich habe dazu eine Abfrage erstellt. Es ordnet zwar der Grösse nach, nur wenn die 5 drinsteht ist diese zuoberst. In der DB habe ich dann nachgesehen und auch dort dasselbe Problem, sobald ich nach Punkten sortiere (aufsteigend oder absteigend) ist die 5 je nach dem zu underst oder zuoberst. Woran könnte das liegen? kann man da etwas machen?


Antworten zu DB sortiert nicht richtig:

1. Welche DB - MySQL wahrscheinlich oder?

2. Query bitte!!

3. kleiner auszug aus der Tabelle und Tabellenstruktur

MFG BWA

« Letzte Änderung: 07.12.05, 21:31:21 von BWA »

1. Ja, ist MySQL

2. Abfrage: "SELECT loginname,punkte FROM benutzer WHERE punkte is NOT NULL ORDER BY punkte DESC";

3. In der Tabelle sind die Daten des Benutzers...name und so weiter plus eben die Punkte

So hätte ich das Problem gelöst:

mysql> insert into benutzer(loginname, punkte) values ('BWA', '5');
Query OK, 1 row affected (0.00 sec)

mysql> insert into benutzer(loginname, punkte) values ('Berniwa', '2');
Query OK, 1 row affected (0.00 sec)

mysql> insert into benutzer(loginname, punkte) values ('BerniWA', '3');
Query OK, 1 row affected (0.00 sec)

mysql> insert into benutzer(loginname, punkte) values ('bWa', '10');
Query OK, 1 row affected (0.00 sec)

mysql> select loginname, punkte from benutzer where punkte is Not null order by punkte DESC;
+-----------+--------+
| loginname | punkte |
+-----------+--------+
| bWa       |     10 |
| BWA       |      5 |
| BerniWA   |      3 |
| Berniwa   |      2 |
+-----------+--------+
4 rows in set (0.00 sec)

mysql> show columns from benutzer;
+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| name       | text    | YES  |     | NULL    |                |
| vorname    | text    | YES  |     | NULL    |                |
| email      | text    | YES  |     | NULL    |                |
| loginname  | text    | YES  |     | NULL    |                |
| passwort   | text    | YES  |     | NULL    |                |
| benutzerID | int(11) |      | PRI | NULL    | auto_increment |
| punkte     | int(11) | YES  |     | NULL    |                |
+------------+---------+------+-----+---------+----------------+
7 rows in set (0.00 sec)


Und so du

mysql> alter table benutzer change punkte punkte Varchar(30)
    -> ;
Query OK, 4 rows affected (0.03 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> Select * from benutzer;
+------+---------+-------+-----------+----------+------------+--------+
| name | vorname | email | loginname | passwort | benutzerID | punkte |
+------+---------+-------+-----------+----------+------------+--------+
| NULL | NULL    | NULL  | BWA       | NULL     |          1 | 5      |
| NULL | NULL    | NULL  | Berniwa   | NULL     |          2 | 2      |
| NULL | NULL    | NULL  | BerniWA   | NULL     |          3 | 3      |
| NULL | NULL    | NULL  | bWa       | NULL     |          4 | 10     |
+------+---------+-------+-----------+----------+------------+--------+
4 rows in set (0.00 sec)

mysql> select loginname, punkte from benutzer where punkte is Not null order by punkte DESC;
+-----------+--------+
| loginname | punkte |
+-----------+--------+
| BWA       | 5      |
| BerniWA   | 3      |
| Berniwa   | 2      |
| bWa       | 10     |
+-----------+--------+
4 rows in set (0.01 sec)

mysql> select loginname, punkte from benutzer where punkte is Not null order by punkte;
+-----------+--------+
| loginname | punkte |
+-----------+--------+
| bWa       | 10     |
| Berniwa   | 2      |
| BerniWA   | 3      |
| BWA       | 5      |
+-----------+--------+
4 rows in set (0.00 sec)

mysql> show columns from benutzer;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| name       | text        | YES  |     | NULL    |                |
| vorname    | text        | YES  |     | NULL    |                |
| email      | text        | YES  |     | NULL    |                |
| loginname  | text        | YES  |     | NULL    |                |
| passwort   | text        | YES  |     | NULL    |                |
| benutzerID | int(11)     |      | PRI | NULL    | auto_increment |
| punkte     | varchar(30) | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

Dein Problem ist wie man glaub ich erkennen kann das du wahrscheinlich Varchar oder einen String verwendet hast, dass hat eine falsche sortierung zu Folge, änders ganz einfach in Int.

alter table benutzer change punkte punkte int;

Hey danke vielmal..hat funktioniert. Hatte tatsächlich varchar statt int!

Gruss Kallio


« Was bedeutet "Befehlserweiterung" bei Batchprogramierung unter Dos oder CMDIch möchte VBA für Access lernen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Datenbank
Eine Datenbank (DBS), im englischen database, ist eine strukturierte Datensammlung und fungiert wie ein "digitales Archiv". Datenbanken dienen der effizienten Aufbewahrun...

Notebook
Ein Notebook ist ein kleiner, zusammklappbarer Computer für unterwegs. Er besteht aus Tastatur, Touchpad oder ähnlichem Mausersatz, Bildschirm und dem Innenlebe...

Datenkompression
Siehe komprimieren. ...