Rolf B: sortierung über zwei Tabellen, und dann eine bestimmte Zeile nach der sortierung ausgeben

Beitrag lesen

Hallo Michi,

du verwendest quest LEFT JOIN quest_cat. Warum? Das wäre nur sinnvoll, wenn es Fragen ohne Kategorien gibt. Ist das so?

Das Problem mit dem Satz Nr. X ist, dass solche Angaben in SQL eigentlich irrelevant sind. Eine laufende Nummer ist Schall und Rauch, wenn die DB im Multiuser-Betrieb läuft. Die Hauptanwendung für "Zeile X" oder "Zeile X-Y" ist eigentlich Paging, und das macht man schlauerweise über Schlüssel, nicht laufende Nummern (weil es für SQL effizienter ist).

Die Frage wäre also: Woher kommt überhaupt die laufende Nummer? Woher weißt Du, dass Du die "zweite Zeile" brauchst? Abhängig davon kann man überlegen, wie man das Problem mit SQL Prinzipien lösen kann.

Also - wenn Du es natürlich unbedingt willst - es gibt in MYSQL die LIMIT Klausel, und in MS SQL die TOP Klausel. Oracle oder Postgre haben sicherlich ähnliches.

MYSQL: LIMIT X, Y (am Ende des Statements) bedeutet, dass er vom Ergebnis X Sätze überspringen soll und dann Y Sätze zurückgeben.

MS SQL: TOP N (direkt hinter dem SELECT Schlüsselwort) bedeutet, dass er vom Ergebnis die ersten N Sätze liefern soll.

Rolf

--
sumpsi - posui - clusi