mysql tabellenposition ausgeben ?

MySQL, PostgreSQL, SQLite
monotek
Posts: 64
Joined: 2003-08-26 23:23
Location: Dresden

mysql tabellenposition ausgeben ?

Post by monotek » 2004-05-18 22:14

gibt es in mysql eine funktion mit der ich mir die position eines eintrages in einer tabelle ausgeben lassen kann ?

folgender hintergrund...
ich habe eine tabelle die als highscore in einem "php spiel" dient.
wird diese tabelle mit einem eintrag gefüllt will ich die plazierung des neuen eintrages ausgeben.
mit count komme ich nicht wirklich zum ziel.
gibt es also für die "tabellenposition" einen mysql befehl ?

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: mysql tabellenposition ausgeben ?

Post by oxygen » 2004-05-18 22:45

Poste mal die Struktur deine Daten.

monotek
Posts: 64
Joined: 2003-08-26 23:23
Location: Dresden

Re: mysql tabellenposition ausgeben ?

Post by monotek » 2004-05-18 23:10

Code: Select all

# phpMyAdmin SQL Dump
# version 2.5.6
# http://www.phpmyadmin.net
#
# Host: localhost
# Erstellungszeit: 18. Mai 2004 um 23:05
# Server Version: 4.0.18
# PHP-Version: 4.3.6
# 
#
# Tabellenstruktur für Tabelle `users`
#

CREATE TABLE `users` (
  `user_id` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  `datum` date NOT NULL default '0000-00-00',
  `time` time NOT NULL default '00:00:00',
  `punkte` int(11) NOT NULL default '0',
  PRIMARY KEY  (`user_id`)
) TYPE=MyISAM AUTO_INCREMENT=33 ;

#
# Daten für Tabelle `users`
#

INSERT INTO `users` VALUES (1, 'frank', '2004-05-18', '18:44:39', 5);
INSERT INTO `users` VALUES (2, 'matze', '2004-05-18', '18:45:35', 2);
INSERT INTO `users` VALUES (3, 'mike', '2004-05-18', '18:50:31', 3);
INSERT INTO `users` VALUES (4, 'test', '2004-05-18', '20:04:08', 0);
INSERT INTO `users` VALUES (5, 'thzgfhgfh', '2004-05-18', '20:04:30', 0);
INSERT INTO `users` VALUES (6, 'test', '2004-05-18', '20:05:40', 2);
INSERT INTO `users` VALUES (7, 'ed', '2004-05-18', '20:07:23', 5);
INSERT INTO `users` VALUES (8, 'test', '2004-05-18', '20:09:29', 6);
INSERT INTO `users` VALUES (9, 'mo', '2004-05-18', '20:10:34', 1);
INSERT INTO `users` VALUES (10, 'hjkhjk', '2004-05-18', '20:11:36', 0);
sortiert wird das ganze nach punkten absteigend...

evilh
Posts: 126
Joined: 2004-03-25 17:45

Re: mysql tabellenposition ausgeben ?

Post by evilh » 2004-05-19 00:41

eine unsaubere lösung wäre es, die tabelle mit

Code: Select all

order by punkte desc
sortiert in einer schleife mit php durchzugehen, und ne variable hochzählen zu lassen bis der entsprechende eintrag kommt...

is aber ziemlich resourcenverschwendend

tyberius prime
Posts: 31
Joined: 2003-07-09 11:01

Re: mysql tabellenposition ausgeben ?

Post by tyberius prime » 2004-05-19 07:43

Was spricht dagegen, die Tabelle zu fragen, wieviele Eintraege mit mehr Punkten es gibt?

(index auf punkte, dann select count(id) from tabelle where punkte > $punktezahl)...
Dann ist doch der momentane Stand automatisch an 'Position' count(id) + 1.
Gleiche Punktzahlen landen damit allerdings auf den gleichen Raengen.

monotek
Posts: 64
Joined: 2003-08-26 23:23
Location: Dresden

Re: mysql tabellenposition ausgeben ?

Post by monotek » 2004-05-19 08:41

jo genau das war mein problem. bei gleichen einträgen passts dann eben nicht mehr :roll:

schade. es scheint also keine direkten mysql befehl für sowas zu geben ?
ich hab zumindest nichts dementsprechendes in der doku gefunden...

monotek
Posts: 64
Joined: 2003-08-26 23:23
Location: Dresden

Re: mysql tabellenposition ausgeben ?

Post by monotek » 2004-05-19 14:56

danke. hat sich erledigt.
ich hab einfach alle besseren und alle gleichen addiert und komme so auch aufs richtige ergebnis..