php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.03.2006, 13:16  
Benutzer
 
Registriert seit: 08.01.2004
Beiträge: 42
Locutus007
Standard Die Position ein. Datensätzes aus einer Datenliste ermitteln

Hallo Leute!

Ich habe eine MySQL- Tabelle mit 6000 Einträgen. Angenommen, ich möchte jetzt 100 Mal eine Abfrage darauf anwenden. Die Abfrage, soll ermitteln an welcher Position, sich ein bestimmter Eintrag befindet. Also ich frage alle Datensätze ab, ordne sie nach einer bestimmten Eigenschaft und möchte jetzt wissen, an welcher Postion Datensatz xy steht. Im Prinzip, wie eine Highscoreliste. Ich möchte erfahren, auf welchem Platz sich der User xy befindet.

Soweit klar, oder? :wink:

Jetzt die Frage, gibt es eine Funktion oder irgendeine andere möglichkeit als diejenige, dass ich immer alle User abfrage und dann per PHP nach diesem User suche und dann ja auch den Platz ermitteln kann.

Wenn man 6000 Einträge oder irgendwann mal 50.000 Einträge hat, fällt diese Lösung ja komplett raus.

Es geht im Übrigen nicht um eine Highscoreliste, ich hab dies nur erwähnt, da es ähnlich ist.

Kennt irgendjemand eine Methode, wei man dieses Problem lösen kann?!
Locutus007 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.03.2006, 13:28  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Mach dir eine ID-Spalte mit Auto_increment-Attribut. Dann hast du eine Art Positionsangabe. Theoretisch kann diese Positionsangabe auch Lücken enthalten, aber auch das kann man anpassen.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 07.03.2006, 13:36  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Würde ja nix bringen wenn sich die Reihnfolge ändert sitzt die ID nicht an der "gewünschten" position und wie du schon sagtest kann diese ID "Lücken" haben ...


Ode rhab ich da jetzt was falsch verstanden !
M3g4Star ist offline   Mit Zitat antworten
Alt 07.03.2006, 13:37  
Benutzer
 
Registriert seit: 08.01.2004
Beiträge: 42
Locutus007
Standard

Hab ich ja sowieso schon. Kann ich aber nicht nutzen, da ich die ganze Abfrage noch nach einer anderen Eigenschaft sortiere, und da hilft mir die ID-Spalte leider nichts.

EDIT: @M3g4Star Nein, hast du richtig verstanden!
Locutus007 ist offline   Mit Zitat antworten
Alt 07.03.2006, 13:39  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

@Locutus007 warum erklärst du uns nicht einfach an einem konkreten Beispiel was du eigentlich vorhast. Vileicht finden wir ja noch ne elegantere Lösung.
__________________
Wie man Fragen richtig stellt
dsmcg ist offline   Mit Zitat antworten
Alt 07.03.2006, 13:51  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo,
du kannst es über einen Umweg lösen, nämlich in dem du alle User zählst
deren Wert größer (oder andersrum benötigt kleiner) ist als der Wert,
durch den sich das Ranking sortiert!

Beispiel:
Code:
id | user | punkteSpiel1 | punkteSpiel2
1 | klinsmann | 5 | 10
2 | heino | 7 | 1
3 | bier | 24 | 8
Der SQL-Befehl würde dann lauten:
Code:
SELECT COUNT(*) AS rank FROM tabelle WHERE punkteSpiel1 + punkteSpiel2 < $bereits_ermittelte_punktezahl_des_users
// < oder <= je nachdem ob das Glas halbvoll oder halbleer ist ;)
Ein einzelner Befehl für eine unsortierte Gruppe von Usern (zB
Anfangsbuchstaben A-M) fällt mir nicht. Ich weiß auch nicht ob man den
SQL-Befehl in einen normalen SQL-Befehl über den man die User abholt
schon reinwurscheln kann.

(Thread in MySQL verschoben)
Zergling-new ist offline   Mit Zitat antworten
Alt 07.03.2006, 13:52  
Benutzer
 
Registriert seit: 08.01.2004
Beiträge: 42
Locutus007
Standard

Ok, also ich habe ein Tippspiel, bei dem die User die Begegnungen der Fußballbundesliga tippen können. Je nach Erfolg bekommen sie dafür Punkte. Die Punktetabelle hat folgenden Aufbau:

Punkte-ID (autoinrement), User-ID, Spiel-ID, erzielte Punkte

Aus dieser Punktetabelle lässt sich ja nun ganz einfach abfragen, wer die Meisten Punkte hat usw. Weiter lässt sich eine geordnete Liste ausgeben, die zeigt, wer auf welchem Platz liegt.

Nun möchte ich eine Grafik anzeigen lassen, die die Platzierung eines Users in einem Verlauf über die gesamte Saison zeigt. Also auf welchem Platz war ein bestimmter User am ersten Spieltag, am zweiten, dritten usw. Letztendlich soll auf Grundlage dieser Daten eine Kurve gezeigt werden, aus der man die Platzierung eines Users zu einem bestimmten Spieltag ablesen kann.

Verstanden?

Um dies zu realisieren, muss ja die Platzierung des Users, zu einem bestimmten Spieltag, ermittelt und separat abgespeichert werden. Die Tabelle Platzierung sieht vereinfacht so aus.

Platzierungs-ID (autoincrement), User ID, Spieltag, Platz

Was mach ich also um die Platzierujng des Users zu einem bestimmten Spieltag zu bekommen? Ich frage, die Punktetabelle mit allen Usern ab, die mir logischerweise genausoviele Datensätze ausgibt, wie User im System sind. Wenn ich 2000 User habe, bekomme ich 2000 Datensätze. Sobald die Daten in PHP vorliegen, suche ich anhand der ID des Users, seine Position und speichere diese in die Platzierungstabelle. Dabei muss PHP 2000 Einträge in einem Array managen. Nicht sehr toll.

Wenn ich jetzt 15.000 User habe, ist dieses Verfahren ziemlich daneben. Ich hoffe, irgendjemand, hat einen ansatz für mich.


EDIT: @ Zergling. WOW! Super-Idee. Ic habe es geprüft. Es müsste für meine Zwecke theoretisch einwandfrei anzuwenden sein. Vielen Dank dafür!
Locutus007 ist offline   Mit Zitat antworten
Alt 07.03.2006, 14:07  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ich würde es in dem Moment, wo du über das Admin-Script die Ergebnisse der Begegnungen einträgst, automatisch auch alle User-Punkte und die Plazierung mit auswerten. Da sich die Daten im Nachhinein ja nie mehr ändern, ist es nicht unbedingt sinnvoll, sie auch ständig neu berechnen zu wollen. Zudem ist das dann die einfachste Möglichkeit, an die Daten für deinen Grafik-Verlauf dranzukommen.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 07.03.2006, 16:59  
Benutzer
 
Registriert seit: 08.01.2004
Beiträge: 42
Locutus007
Standard

Genau so mache ich es ja! Dennoch müssen sie einmal nach dem oben stehenden Verfahren ermittelt werden. BAer die Lösung von Zergling ist gut. Hätte mir nur gewünscht, dass es irgendwie noch komfortabler geht.
Locutus007 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
CSS: Style ohne position? SilentSight HTML, Usability und Barrierefreiheit 5 25.07.2008 16:12
Einzeltreffer von MATCH ... AGAINST ... ermitteln proud Datenbanken 3 09.05.2008 08:31
Position einer zeile in einer sortierten tabelle bestimmen Drache Datenbanken 9 17.06.2007 10:45
Mauszeiger Position (ohne Event) cowabunga1984 HTML, Usability und Barrierefreiheit 4 04.04.2007 12:01
Google Adwords - echten Referer ermitteln NetLook PHP Tipps 2006 2 12.05.2006 08:40
mit position nachruecken imported_kremser Datenbanken 2 08.02.2006 21:50
Dateiname, Dateigröße ermitteln HTML, Usability und Barrierefreiheit 5 29.01.2006 22:16
position ermitteln greenrover Datenbanken 0 06.10.2005 23:03
Position abfragen Datenbanken 5 29.09.2005 16:31
build nummer des bs ermitteln ... nur bei microsoft's bs!!! PHP Tipps 2005-2 2 24.07.2005 15:59
Besucher mit den meisten GB Einträgen ermitteln! Datenbanken 7 21.04.2005 12:09
Position in der Datenbank. PHP-Fortgeschrittene 2 21.11.2004 16:10
CRC Summe einer Datei ermitteln?? PHP Tipps 2004 1 14.10.2004 09:23
[Erledigt] Tabellenname eines Feldes ermitteln PHP-Fortgeschrittene 3 22.09.2004 15:49
Position relative oder absolute Stümper HTML, Usability und Barrierefreiheit 3 12.09.2004 11:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql position eines datensatzes, sql position datensatz, mysql position ermitteln, mysql position datensatz, mysql position eines datensatzes ermitteln, sql position ermitteln, sql datensatz position, mysql datensatz position, sql platzierung, http://www.php.de/datenbanken/37926-die-position-ein-datensaetzes-aus-einer-datenliste-ermitteln.html, mysql position bestimmen, sql platzierung ermitteln, sql position eines datensatzes, position eines datensatzes ermitteln, sql position bestimmen, sql position eines eintrags bestimmen, position ermitteln mysql, php mysql position datensatz, position ermitteln sql, mysql scoreliste position bestimmen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.