phpbar.de logo

Mailinglisten-Archive

nur jeden n-ten Datensatz abfragen

nur jeden n-ten Datensatz abfragen

Tobias Daur daur at so-nso.de
Don Jan 27 12:26:51 CET 2005


Hi Sebastian, hi alle,

Danke für Euer Hirn ... Ich antworte mal hier, um nicht 5 Mails
produzieren zu müssen. 

Das Posting von Dir, Sebastian, hat nochmal ganz gut demonstriert, wie
das aussehen soll (ich hoffe, das reicht Dir, Norbert, als Beispiel): 

> # | A | Ba | Ben | Ber | Bes | Bi | C | D ... Z

Ich erklär's aber trotzdem nochmal ausführlicher:

Inhaltlich geht es um ein Warenwirtschaftsystem (Intranet), das dann
klassisch Kunden, Bestellungen, Artikel, Lieferanten etc. verwaltet und
dabei möglichst gut bedienbar sein soll. 

Wenn nun jemand bspw. in einer Artikelliste nach Hersteller=BMW sucht,
dann kann die Ergebnismenge ziemlich groß sein. Um abzuschätzen, welche
Ergebnisse ein bestimmter Seitenlink zeigen wird, ist es wie in einem
Lexikon sinnvoll, wenn der Link nicht "8" heißt, sondern eben "Bes". 
Da die Artikelnamen nicht gleichverteilt sind, ich aber eine feste
Anzahl von Results pro Ausgabe-Seite haben möchte, benötige ich eine
solche Abfrage. 

Vorschlag von Johannes: Schleife. Scheint mir, wie Du selber auch
schreibst, aus Performancegründen auszuscheiden. 

Volker: having(mod(id,50)=0). Das ist schon die halbe Miete, gefällt
mir. Allerdings ist es so, daß ich das Teil universell für recht
verschiedene Abfragen, die natürlich über mehrere Tabellen gehen,
erstellen möchte. 
Was ich also bräuchte, wäre ein SQL-Befehl, mit dem ich dem Resultset
ein Feld mit einem fortlaufenden Zähler hinzufüge, auf den dann das
having angewendet wird.

Geht das?

Sebastians Vorschlag dazu, was mit GROUP_CONCAT() zu machen, habe ich
ehrlich gesagt nicht verstanden ...

> denn für diese Navigation ist ja nicht relevant ob es jeder 50. oder 
> 100. ist, sondern wo sich etwas Ändern an dem Wort, oder?
> also nicht:  Ben (50.) Ben (100.) Ben (150.) Ber (200.)
> sonder eher: Ben (50.) Ber (200.) Bes (350.)

Also, ich wollte eigentlich schon genau jeden bspw. 50sten haben, und
dann so viele Zeichen anzeigen, wie nötig sind, um einen Unterschied zu
zeigen. Wenn dann keiner da ist, gibt es tatsächlich bspw:
Filter | Filter | Filter | 
Schließlich geht es ja darum, bei jeder aufrufbaren Seite zu wissen,
womit sie anfängt. 


> allerdings brauchst du eine zusätzliche Einzelseiten-Navigation 
> trotzdem, sonst müsstest du auf der Seite 'Ben' ja alle 'Ben's >
anzeigen! 
> Das was du willst kann nur als Erweiterung dienen.

Ich dachte mir das so: Ich bilde bis zu 30 Links ab, = 30 Seiten = bis
zu 1.500 Datensätze. Wenn die Anzahl der Result-Datensätze größer 1.500
ist, wird das ganze zweistufig: Ich bilde wieder bis zu 30 Links ab, die
in dann in 1.500er Sprüngen die Buchstaben anzeigen, ein Klick auf den
Link bringt für diesen 1.500er Block die Links für die 30 Seiten mit je
50 Datensätzen. 

Und weil ich das ganze mit nem JS-Menü koppele (ups, jetzt sind wir
wirklich OT), brauche ich nur einen Serveraufruf, um die Navi
aufzubauen, dann kann der User mit einem Klick auf die Seite, die er
braucht, springen.

thx4help


Tobias


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive