Peter Nack: suchergebnisse, detailseite und blaetterfunktion

Beitrag lesen

Hi Dedlfix,

danke fuer deine Geduld ;-)

WHERE IF(position < $currentPosition, TRUE, IF(position > $currentPosition, FALSE, id < $currentID))

Hm.. ich verstehe. Allerdings habe ich Probleme das Beispiel zu adaptieren, sobald mehrere Sortierkriterien ins Spiel kommen.
In der "echten" Anwendung ist die ID erst das letzte Soriterkriterium, davor kommen vier andere Spalten zum Einsatz. Erschwerend kommt hinzu, dass position dort kein fester Spaltenwert ist, sondern sich durch diverse Subselects zusammensetzt.

Ich bin drauf und dran einen anderen Weg zu gehen. Ein Grund ist sicherlich der, dass ich damals bereits geschlagene zwei Wochen an dem eigentlichen Select gesessen habe (bis es mir letztendlich exakt die Ergebnisse geliefert hat, welche ich bekommen wollte) und ich so langsam mit meiner Motivation zu kaempfen habe ;-)

Und zwar koennte ich bei der Suche der Items gleich zwei Datenbankabfragen absetzen (auf der Detailseite kaemen ja sowieso zwei weitere Abfragen hinzu (oder evtl. nur eine wenn ich mit UNION arbeiten kann)).
Die erste Abfrage liefert mir die limitierten Ergebnisse (sprich die kompletten Objekte mit all ihren dutzenden Referenzobjekten).
In der zweiten Abfrage lasse ich mir einfach die IDs ausgeben - ohne Limitierfunktion, ohne Models, ohne Referenzobjekte. Dieses ID-Array uebergebe ich dann mit der Session, so dass jede Detailseite lediglich zu schauen braucht, welches Item in der Liste vorher bzw. nachher dran ist.

Eventuell hiesze dies unnoetiger Overhead. Jedoch kalkuliere ich den Datenbestand auf eine maximale Anzahl von 1000 (Tausend) Items. Also eine sehr geringe Menge, wobei eine Suchseite sowieso bereits nur auf eine gefilterte Menge zugreifen kann. Folglich habe ich im Durchschnitt eine Ergebnismenge von ca. 100 Items zu erwarten. Und ein Query, welches lediglich die IDs ausliefert, wird im Gegensatz zu dem objektorientierten Select - sowohl was MySQL als auch PHP betrifft - sicherlich nicht so viel  Resourcen schlucken.

MfG
Peter