Problem mit LIMIT und WHERE...LIKE
Onkel Schnitzel
- php
Nabend,
Ich hab mal wieder ne Denkblockade. Ich sitze immer noch an meiner MySQL-Filterfunktion. Das LIMIT arbeitet mit dem WHERE-LIKE nicht so zusammen, wie ichs mir vorgestellt habe.
FROM
News
WHERE
Rubrik
LIKE
'$auswahl'
ORDER BY
Datum DESC
LIMIT
5, 20";
Hier soll er eigentlich die gesamte Tabelle ab dem 5. Datensatz auslesen und dann rausfiltern. Jetzt macht ers umgekehrt- er filtert erst und wendet den offset dann auf die gefundenen Datensätze an. Irgendwie ist das ja auch logisch, es steht ja in der Reihenfolge da ;-)
Ich habe im Moment irgendwie keine Idee, wie ich das richtig machen kann. Ich müßte vielleicht vorher die Tabelle komplett auslesen, die ersten 5 Einträge markieren, dann die Tabelle nochmal komplett auslesen mit Filterfunktion und von diesem zweiten Ausleseergebnis die vorher markierten Datensätze aussortieren. Irgendwie erscheint mir das aber zu kompliziert und ich wüßte auch auf Anhieb nicht, wie ich das umsetzen könnte. Habt Ihr ne praktikablere Lösung?
Vielen Dank,
Onkel Schnitzel
Hallo Onkel Schnitzel
Verstehe ich Dein problem richtig??
Es kommen die richtigen Ergebnisse, nur eben verkehrt,
also nicht aufwärts sondersn abwärts sortiert.
Wenn ja, dann ersetze DESC durch ASC und alles ist okay...
Schönen Tag noch wünscht
AhANiBoy
Verstehe ich Dein problem richtig??
Nein, leider nicht ;-)
Hello,
Hier soll er eigentlich die gesamte Tabelle ab dem 5. Datensatz auslesen und dann rausfiltern. Jetzt macht ers umgekehrt- er filtert erst und wendet den offset dann auf die gefundenen Datensätze an. Irgendwie ist das ja auch logisch, es steht ja in der Reihenfolge da ;-)
Wer ist "er"?
Das limit 'offset, anzahl' bezieht sich immer auf die Ergebnismenge.
Wenn Du nun die Sätze nach Nummer filtern willst, musst Du das auch in das WHERE-Statement schreiben.
where nummer > 5
Welche Nummer auch immer das sein soll.
Datensätze in SQL-Kollektionen liegen per Definition immer als Menge ohne Sortierung vor.
Die Ordnung/Sortierung kommt erst über entsprechende Abfragen zustande, die selbstverständlich auf die in den Sätzen enthaltenen Daten aufsetzen müssen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Datensätze in SQL-Kollektionen liegen per Definition immer als Menge ohne Sortierung vor.
Die Ordnung/Sortierung kommt erst über entsprechende Abfragen zustande
Ist richtig, und ich glaube deswegen geht das auch nicht so, wie ichs vorhatte. Aber die IDs werden ja in der Reihenfolge der Erstellung vergeben. Ich könnte also die höchste ID (mysql_num_rows) herausfinden, von dieser 5 abziehen
$id = mysql_num_rows($anfrage);
$id2 = $id-5;
und dann vor der Ausgabe der Daten nochmal eine Bedingung einfügen.
$id3 = $array['ID'];
if($id3<$id2) {
while($xx = mysql_fetch_asscoc........
else........
Ob das der Weisheit letzter Schluß ist, weiß ich auch noch nicht, aber ich werds mal versuchen.
Danke und Gruß,
Onkel Schnitzel