Mysql Speed
Maehmann 20.02.2003 - 22:13 4835 44
atrox
in fairy dust... I trust!
|
where id > $x order by ... limit 50;
|
Maehmann
OC Addicted
|
nope geht eben nicht ...
sag ma ich hab auf der page 20 Filme dann soll er nur die 20 sortieren, die der user gerade sieht ... wenn ichs wie mit "where id > $x order by ... limit 50;" mach, dann sortiert er mir wieder alle ab dem ersten Film der aktuellen Seite bis zum Schluss.
|
atrox
in fairy dust... I trust!
|
was macht das überhaupt für einen sinn, nur einen teil der filme zu sortieren, entweder man zeigt doch nach dem schlüssel (zb id) an, oder nach einem suchkriterium. so ein "lokales" sortieren auf seiten zum blättern (ich nehme an, es soll sowas werden) ist total unüblich. wie auch immer, als workaround kannst du dir ja in einem ersten query nur die höchste id (nennen wir sie $ende) mit id > $x und limit besorgen und dann mit id between $x and $ende order by ... anzeigen lassen. // edit: womöglich lassen sich auch user-variablen zum abzählen verwenden, ganz ähnlich wie in diesem beispiel: http://www.faqts.com/knowledge_base...id/1238/fid/104
Bearbeitet von atrox am 27.02.2003, 19:12
|
Maehmann
OC Addicted
|
so ein "lokales" sortieren auf seiten zum blättern (ich nehme an, es soll sowas werden) ist total unüblich. Jop. Genauso was solls werden ![;)](/images/smilies/wink.gif) wie auch immer, als workaround kannst du dir ja in einem ersten query nur die höchste id (nennen wir sie $ende) mit id > $x und limit besorgen und dann mit id between $x and $ende order by ... anzeigen lassen. [/B] Klingt gut Werd ich nach dem Essen einbauen ![:D](/images/smilies/biggrin.gif) THX
|
atrox
in fairy dust... I trust!
|
tortzdem sehe ich nicht die sinnhaftigkeit.. wenn ein user nach namen sortiert, und er hat als obersten eintrag auf der seite "Boogie Nights" und als letzten Eintrag "Star Trek", dann wird er wohl erwarten daß beim vorblättern filme mit dem namen < "Boogie Nights" zu finden sind (also A.. und B...) und analog beim weiterblättern filme > "start Trek" also mit anfangsbuchstaben "s.. t.. u.." usw zu finden sind. oder nicht ?
|
Maehmann
OC Addicted
|
Jop ... genauso is es auch ![;)](/images/smilies/wink.gif) nur kann soll er die Filme die er gerade sieht auch nach anderen Kriterien sortieren können ... wenn er also auf der Seite 1-50 sieht, dann kann er dort auch nach Genre oder Sprache sortieren ... wenn er auf weiter klickt, dann sieht er die Filme 51-100 (zu Beginn nach dem Titel sortiert) ... ![:)](/images/smilies/smile.gif) damn ... die funktion MAX() von mysql ignoriert Limit
Bearbeitet von Maehmann am 27.02.2003, 20:11
|
atrox
in fairy dust... I trust!
|
na, mit max() wirds nicht hinhauen, weil limit "hinterher" angewandt wird. versuchs mit den user-variablen oder ganz unnschön mit "händisch" durchzählen
|
Maehmann
OC Addicted
|
naja ... es gibt bei php auch eine funktion max() die liefert angeblich das größte element des arrays ... vielleicht mach ich was falsch, aber ich bekomm immer 1 als ergebnis ![:(](/images/smilies/frown.gif) So jetzt hab ichs "per hand" durchgezählt ... wahahhaahahaha ... ![:bash:](/images/smilies/bash.gif) das hilft auch nur bedingt ![;)](/images/smilies/wink.gif) da er die filme jetzt auf den einzelnen Seiten nicht mehr nach titel sondern nach id sortiert ![:bash:](/images/smilies/bash.gif) *argl* heißt soviel wie ... auslesen des titels vom ersten und letzten Film auf der Seite und dann BETWEEN den beiden auslesen ... argl ... Wie zum Geier les ich nur den 50 Datensatz aus, sortiert nach Fimtitel? Ich glaub ich bin zu blöd für komplexere Mysqlgschichtln ![:p](/images/smilies/tongue.gif) Kanns ja ned sein, dass man sowas ned auf einmal aulesen kann
Bearbeitet von Maehmann am 28.02.2003, 12:34
|
Maehmann
OC Addicted
|
So ... drauf geschissen ![;)](/images/smilies/wink.gif) Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =)
|
watchout
Legendundead
|
So ... drauf geschissen ![;)](/images/smilies/wink.gif) Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =) ich versteh dein problem net, in dem moment wo ich eine seite anzeige habe ich ja schon die id's - ich kann ja nicht was anzeigen wenn ich nicht weiss was ich anzeige...
|
Maehmann
OC Addicted
|
Da hast du wohl recht ![;)](/images/smilies/wink.gif) Es geht auch um die Sortierung vor der Ausgabe ... Ich hab leider keine brauchbare Funktion gefunden mit der ich das Array im nachhinein sortieren könnte. Und das sortieren mit MYSQL ist eben etwas kompliziert. Siehe oben
|
Snoop
Here to stay
|
Ich muss ehrlich sagen ich versteh dein Problem nicht ??? du machst einfach in der tabelle ein paar links mit file.php?sort=title&order=1 ... file.php?sort=laenge&order=2....... etc dann machst einfach [PHP] IF ($_GET[sort] == "laenge") { $sort = "laenge"; }elseif($_GET[sort] == "title") { $sort = "title"; }elseif...... }else{ $sort = "title"; };
IF ($_GET[order] == "1") { $order = "ASC"; }elseif{$_GET[order] == "2") { $order = "DESC"; }else{ $order = "ASC"; };
SELECT blbalbalab FROM $table WHERE blabalbala ORDER BY $sort $order";
und die geschichte hat sich ! :P
|
Maehmann
OC Addicted
|
jaja ... ![:p](/images/smilies/tongue.gif) das geht aber nur, wenn alles auf einer seite angezeigt wird. wenn ich auf einer seite nur 50 einträge anzeigen lasse und dann nur diese 50 Einträge sortieren möchte, dann geht das mit MYSQL ned wirklich einfach ![:p](/images/smilies/tongue.gif) eine möglichkeit wäre, dass array mit php zu sortieren ... dazu hab ich aber keine brauchbare Funktion gefunden
|
atrox
in fairy dust... I trust!
|
|
Maehmann
OC Addicted
|
hmmm ... thx für den Link ... das hab ich mir eh schon mal kurz angeschaut. Hab mittlerweile aber auf dieses Feature verzichtet ![;)](/images/smilies/wink.gif) Prog mal den Rest ... am Schluss werd ich mir dieses Feature nochmal durch den Kopf gehen lassen
|