"We are back" « oc.at

Mysql Speed

Maehmann 20.02.2003 - 22:13 4835 44
Posts

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
where id > $x order by ... limit 50;

Maehmann

OC Addicted
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
Zitat von atrox
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 ;)

Zitat
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

THX :)

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
Jop ... genauso is es auch ;)
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) ... :)

damn ... die funktion MAX() von mysql ignoriert Limit :(
Bearbeitet von Maehmann am 27.02.2003, 20:11

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
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 :(

So jetzt hab ichs "per hand" durchgezählt ...
wahahhaahahaha ... :bash:

das hilft auch nur bedingt ;)
da er die filme jetzt auf den einzelnen Seiten nicht mehr nach titel sondern nach id sortiert :bash:

*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
Kanns ja ned sein, dass man sowas ned auf einmal aulesen kann :(
Bearbeitet von Maehmann am 28.02.2003, 12:34

Maehmann

OC Addicted
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
So ... drauf geschissen ;)
Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Maehmann
So ... drauf geschissen ;)
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... :confused:

Maehmann

OC Addicted
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
Da hast du wohl recht ;)

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
Registered: Jun 2002
Location: Gablitz
Posts: 1092
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
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
jaja ... :p
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

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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
damit kannst du multi-dimensionale arrays sortieren (siehe beispiel 2)
http://www.php.net/manual/en/function.usort.php

Maehmann

OC Addicted
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
hmmm ... thx für den Link ... das hab ich mir eh schon mal kurz angeschaut.
Hab mittlerweile aber auf dieses Feature verzichtet ;)
Prog mal den Rest ... am Schluss werd ich mir dieses Feature nochmal durch den Kopf gehen lassen :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz