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 ?
mysql tabellenposition ausgeben ?
Re: mysql tabellenposition ausgeben ?
Poste mal die Struktur deine Daten.
Re: mysql tabellenposition ausgeben ?
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);
Re: mysql tabellenposition ausgeben ?
eine unsaubere lösung wäre es, die tabelle mit
sortiert in einer schleife mit php durchzugehen, und ne variable hochzählen zu lassen bis der entsprechende eintrag kommt...
is aber ziemlich resourcenverschwendend
Code: Select all
order by punkte desc
is aber ziemlich resourcenverschwendend
-
- Posts: 31
- Joined: 2003-07-09 11:01
Re: mysql tabellenposition ausgeben ?
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.
(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.
Re: mysql tabellenposition ausgeben ?
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...
schade. es scheint also keine direkten mysql befehl für sowas zu geben ?
ich hab zumindest nichts dementsprechendes in der doku gefunden...
Re: mysql tabellenposition ausgeben ?
danke. hat sich erledigt.
ich hab einfach alle besseren und alle gleichen addiert und komme so auch aufs richtige ergebnis..
ich hab einfach alle besseren und alle gleichen addiert und komme so auch aufs richtige ergebnis..