Forum: Programmieren allgemein
by Hedge,
4. Jul 2009
Hab es jetzt statt mit der verschachtelten Lösung einfach nach alcaeus Methode gemacht.
Das ist am Übersichtlichsten.
Ich schiebe das Zeug allerdings nicht in einen Array, sondern benutze UNION, dann hab ichs auch gleich aus 1 Hand.
Forum: Programmieren allgemein
by Hedge,
4. Jul 2009
Moin auch,
Ja, da hast du nicht Unrecht.
Da der Score doch von Anfang an bekannt ist, reduziert sich das Konstrukt auf 3 Abfragen.
Da stehst deine Variante mit 2 Abfragen immernoch besser da.
Kann man bei deiner Methode die Ergebnissmengen denn zusammenfügen?
Hab nämlich für die Ausgabe der Tabelle ne Funktion die als Parameter das entgegennimmt was in der WHERE-Klausel steht.
Forum: Programmieren allgemein
by Hedge,
4. Jul 2009
Ich glaub ich gugg nicht recht.
Das ist des Rätsels Lösung!
Es funzt!!!
Hatte dein Beispiel auch mit Order By erweitert, aber vor lauter Schlaftrunkenheit das LIMIT 5 übersehen, das dann davor stand.
Ich muss allerdings mal ein wenig auf die Performance schauen, weil diese Abfrage auf einer Seite 3 Mal genutzt werden muss.
Forum: Programmieren allgemein
by Hedge,
4. Jul 2009
Ich habs in dem Datenbestand versucht, wo es auch zum Einsatz kommen soll (knapp 6000 Datensätze).
Deine Test-Daten liegen bereits in der Grundreihenfolge sortiert vor. Deshalb funktioniert es wahrscheinlich.
Forum: Programmieren allgemein
by Hedge,
4. Jul 2009
Weiß nicht was du korrigiert hast, deswegen habe ich es nochmal versucht, aber komme zu dem gleichen Resultat.
Forum: Programmieren allgemein
by Hedge,
4. Jul 2009
Hab es 2 Mal ausprobiert, aber so geht es leider nicht.
Zwar gibt es 5 Ergebnisse, unter denen auch der Auserwählte ist, aber die anderen Ergebnisse sind frei aus der Luft gegriffen.
Forum: Programmieren allgemein
by Hedge,
3. Jul 2009
SELECT score
FROM 'user'
WHERE 'user_id'= 1
Da kriegen wir den score her, den der jeweilige User hat
Nun sollen die Daten für diesen User und die 2 nächsten die mehr punkte haben und die 2 die weniger als er haben bestimmt werden
SELECT username,score,land
FROM `user`
Forum: Programmieren allgemein
by Hedge,
3. Jul 2009
Ah danke.
Ich versuche es immer noch auf dem klassischen Weg.
Mir ist ne Idee gekommen.
Ist es möglich ein temporäres Feld einzuführen bei dem die Datensätze laufend nummeriert werden in der reihenfolge in der ich sie bei der 1. Abfrage sortiere?
Da könnte ich feststellen an welcher Position sich mein gesuchter datensatz mit Nummern ausgedrückt befindet und danach in einer Unterabfrage...
Forum: Programmieren allgemein
by Hedge,
3. Jul 2009
Wow super.
Immerhin nur 2 Abfragen :)
Könnte man das Ganze mit Stored Procedures verbessern?
EDIT: Mein Fall ist noch ein wenig schwieriger.
Mir ist die ID des Users geläufig nach der ich selektieren kann, aber nicht wie groß das Sortierkriterium des Users ist.
Also sind es dann doch 3 Abfragen :/
Forum: Programmieren allgemein
by Hedge,
3. Jul 2009
Folgendes Problem.
Meine Datensätze werden geordnet.
Für einen bestimmten Datensatz ist der Primary-Key bekannt.
Aus der Tabelle möchte ich dieses Element inklusive der 2 nächstkleineren Elemente und der 2 nächstgrößeren Elemente als Ergebnismenge verarbeiten.
Hat Jemand eine Idee wie ich das mit weniger als 3 Queries schaffen kann?