Hallo zusammen
Ich habe in einer Tabelle Spielerdaten eines Hockeyteams erfasst (PID, Name, Vorname, Geburtsdatum, Grösse, Gewicht...) gespeichert. Auf einer einfachen PHP-Seite möchte ich nun eine kleine Navigation einbauen, welche immer jeweils 5 Spieler anzeigt. Wechsle ich auf Seite 2, so sollen also die Spieler 6-10 angezeigt werden, auf Seite 3 die Spieler 11-15 etc.
Nun habe ich dies mit "SELECT TOP 5 * FROM SPIELER" versucht. Also quasi, es sollen immer die ersten 5 Einträge angezeigt werden. Damit auf Seite 2 aber die Abfrage nicht wieder bei Spieler 1 startet, sondern bei Spieler 6 habe ich die folgende WHERE-Klausel eingebaut:
SELECT TOP 5 * FROM edm_players_data WHERE (((edm_players_data.PID) NOT IN (SELECT TOP 5 edm_players_data.PID FROM edm_players_data))) ORDER BY edm_players_data.NAME, edm_players_data.VORNAME ASC;
Die Abfrage funktioniert fehlerfrei, bringt aber leider trotzdem immer nur die ersten 5 Spieler. Ich kann die Klausel "NOT IN (SELECT TOP 50)" eingeben, er bringt trotzdem die ersten 5. Meiner Logik nach sollten aber die ersten 5 kommen, welche nicht unter den ersten 5 sind (also eben Spieler 6-10).
Was mache ich falsch? :-)
Herzlichen Dank für Tipps jeglicher Art.
Grüsse, Peter
Du müsstest beide Male die selbe Sortierung über ein eindeutiges Feld bzw. Feldkombination anwenden, um ans Ziel zu gelangen.SELECT TOP 5 *
FROM edm_players_data
WHERE PID NOT IN ( SELECT TOP 5 PID
FROM edm_players_data
ORDER BY NAME, VORNAME )
ORDER BY NAME, VORNAME;
BTW: NAME ist ein schlechter Feldbezeichner - besser wäre NACHNAME.
PS: Ich würde aber ein anderes Datenbanksystem verwenden, wenn die GUI mittels PHP erstellt wird. SQLite3, MySQL, Postgresql verfügen alle über eine Limit-Klausel mit Angabe eines Offsets, dessen Werte auch als Parameter genutzt werden können - Access mit seinem TOP-Prädikat hinkt da ganz weit nach.
PPS: Mag man hoffen, dass die hoffentlich ausgewachsenen Spieler ihr Körpergewicht halten. :)
wooow, danke vielmals Lachtaube :-) jetzt funktionierts.
und merci für den tipp. werde ich gleich anpassen, nicht dass da sonst noch was ein problem bereitet. ich hab mich trotz den nachteilen für access entschieden, weil ich da für mich viel einfacher Daten, welche ich im Web gefunden habe, via Excel zurechtschubsen kann und dann in die DB einfügen kann. geht mit csv sicherlich auch in mysql, viele kurze manuelle updates direkt in der tabelle sind für mich in access aber einfacher.
nochmals... DANKE!