SELECT
Gerold Kumpfhuber
- datenbank
Hallo!
Es gibt (in MS-SQL) die SQL-Abfrage SELECT TOP 10 * FROM TABLLE ...
Gibt es auch einen Abrage die nicht die ersten Datensätze ausliest sondenr zB. vom 10 - 20 Datensatz?
LG
Gerold
Hallo!
Es gibt (in MS-SQL) die SQL-Abfrage SELECT TOP 10 * FROM TABLLE ...
Gibt es auch einen Abrage die nicht die ersten Datensätze ausliest sondenr zB. vom 10 - 20 Datensatz?
LG
Gerold
Hallo Gerold
Der Befehl besteht aus zwei Angaben. Die erste sagt, ab welchem Datensatz abgefragt werden soll und der zweite gibt an, wieviele Datensätze abgefragt werden sollen.
<?
$abfrage = "SELECT * FROM links LIMIT 5, 10";
?>
dass heisst, es werden ab dem 5. Eintrag 10 Einträge abgefragt...
yo,
$abfrage = "SELECT * FROM links LIMIT 5, 10";
das ist wohl mysql. was er braucht ist aber mssql, sprich wenn ich micht nicht irre, dann kann man limit nicht für mssql verwenden.
Ilja
Halihallo Gerold
Es gibt (in MS-SQL) die SQL-Abfrage SELECT TOP 10 * FROM TABLLE ...
Gibt es auch einen Abrage die nicht die ersten Datensätze ausliest sondenr zB. vom 10 - 20 Datensatz?
SELECT
TOP 10 *
FROM
(
SELECT TOP 20 *
FROM table
ORDER BY ID ASC
)
ORDER BY ID DESC
etwas umständlich, aber möglich...
Einfacher gehts mit MySQL[tm] :-)
Viele Grüsse
Philipp
Lieber Philipp,
vielen Dank für Deine Antwort.
SELECT
TOP 10 *
FROM
(
SELECT TOP 20 *
FROM table
ORDER BY ID ASC
)
ORDER BY ID DESC
Ich glaube so geht es nicht. Du selektierst die ersten 20 Datensätzte und von denen selektierst Du die ersten 10, welche Du dann umdrehst. Gesamt gesehen ist das SELECT TOP 10 * .......DESC.
Oder irre ich mich?
LG
Gerold
hi,
Ich glaube so geht es nicht. Du selektierst die ersten 20 Datensätzte und von denen selektierst Du die ersten 10, welche Du dann umdrehst.
vorher hat er aber bereits die ersten 20 datensätze ebenfalls "umdrehen" lassen,
SELECT TOP 20 *
FROM table
ORDER BY ID ASC
damit sollte es eigentlich wieder "passen".
gruss,
wahsaga
Halihallo Gerold
SELECT
TOP 10 *
FROM
(
SELECT TOP 20 *
FROM table
ORDER BY ID ASC
)
ORDER BY ID DESCIch glaube so geht es nicht. Du selektierst die ersten 20 Datensätzte und von denen selektierst Du die ersten 10, welche Du dann umdrehst. Gesamt gesehen ist das SELECT TOP 10 * .......DESC.
Oder irre ich mich?
Glaube ich, ja. Ich kenne mich mit MS SQL praktisch gar nicht aus,
könnte gut sein, dass ich irre; obwohl ich dies in diesem
Zusammenhang für unwahrscheinlich halte.
Das Prinzip sollte verstanden worden sein. Zuerst wird die ID
aufsteigend sortiert, davon die ersten 20 selektiert. Im Mainquery
wird die ganze Geschichte dann "rückwärts" sortiert, sodass die
letzten der 20 Einträge am Anfang stehen und davon dann 10 genommen.
Somit haben wir die Datensätze 10-20.
Deine Aussage würde implizieren, dass die TOP-Anweisung vor dem
ORDER BY käme, also Priorität hat. Das wäre IMHO unlogisch, denn die
Selektion kommt sinnvollerweise nach einer Gruppierung oder
Sortierung. Falls ich recht habe, sollte der Query von oben durchaus
richtig funktionieren.
Ich bin mir sogar sicher, dass ich recht habe :-)
Sogar zu 100% denn alles andere würde mein kleines Weltbild von SQL
zur Strecke bringen und mir einen weiteren Grund liefern, M$
zu "hassen" :-)
Viele Grüsse
Philipp
Lieber Philipp,
du hattest recht es funkt so. In der Eile hab ich nur kurz darübergeschaut und da ist es mir komisch vorgekommen. Vielen Dank für Deine Hilfe.
LG
Gerold