Know-How:
Sortierung (Index-Erstellung)
Mit der Sortierung hat es folgende Bewandtnis: Natürlich
wollen wir unsere Datenbank später auch durchsuchen. Bei vielen
Tausend oder sogar Millionen Einträgen würde ein zeilenweises
Durchsuchen von vorne bis hinten sehr lange dauern. Zum Glück
gibt es einen Ausweg: Die Datenbank sortiert bestimmte Felder vor
(man sagt auch, sie erstellt einen "Index" auf die
Daten). Egal wie gross die Datenmengen sind, der Zugriff geschieht
nun immer sehr schnell. Allerdings hat diese Methode auch
Nachteile: Zum einen benötigt man dafür zusätzlichen
Speicherplatz und zum anderen muss bei jedem Hinzufügen oder
Ändern von Daten neu sortiert werden. Aus diesem Grund sollte man
nur Felder sortieren, die man später auch zur Suche braucht.
|
Definition:
sort=[-]Feld[,[-]Feld...] |
Wie bei den Abfragen, können Sie auch nur nach Feldern sortieren, bei
denen Sie in der Datenbank-Definition eine Sortierung ausgewählt haben.
Beachten Sie den Unterschied zwischen der Sortierung als "Zahl"
oder "Text":
Zahl |
Text |
1 |
1 |
7 |
10 |
10 |
115 |
13 |
13 |
22 |
22 |
76 |
7 |
115 |
76 |
Die ungewohnte Reihenfolge bei obiger Textsortierung erklärt sich
dadurch, dass Texte zeichenweise verglichen werden und keine Wertigkeit
der einzelnen Stellen haben, wie Zahlen.
Beispiele:
Ohne Abfragebedingung wird der komplette Inhalt einer Datenbank in
chronologischer Reihenfolge ausgegeben (die zuerst eingetragenen zuerst).
Mit Abfrage erfolgt die Sortierung nach dem ersten abgefragten Feld:
Gibt die Einträge sortiert nach dem Feld "Name" aus, z.B:
"Bachmann", "baller", "Baffke",
"Baumann" usw.
Soll die Ausgabe nach einem anderen Feld sortiert werden, als abgefragt
wird, kann dies mit "sort" bestimmt werden.
<loop Name~=ba
sort=Vorname>$Name, $Vorname<br></loop> |
Gibt alle Einträge aus, bei denen das Feld "Name" mit
"ba" anfaengt, sortiert nach dem Feld "Vorname", also
z.B. "Baffke, Claudia", "baller, jochen",
"Baumann, Karen", "Bachmann, Stefan" usw.
Tip: Soll der komplette Inhalt ausgegeben werden, allerdings
sortiert nach einem bestimmten Feld, geben Sie folgendes an:
Der Stern "*" bedeutet: "Passt auf alles". Es werden
also alle Einträge ausgegeben, allerdings sortiert nach dem Feld
"Name". Dies ist (vor allem bei grossen Datenbanken) schneller
als ein "sort=Name".
Soll die Ausgabe umgekehrt werden, muss ein Minuszeichen "-"
vor der Feldangabe stehen:
<loop Name~=ba
sort=-Vorname>$Name, $Vorname<br></loop> |
Gibt alle Einträge, bei denen das Feld "Name" mit
"ba" anfaengt, sortiert nach dem Feld "Vorname", in
umgekehrter Reihenfolge aus, also z.B. "Bachmann, Stefan",
"Baumann, Karen", "baller, jochen", "Baffke,
Claudia" usw.
Soll der komplette Inhalt, allerdings in umgekehrter Reihenfolge
ausgegeben werden, genügt ein "sort=-":
<loop
sort=->$Name<br></loop> |
Gibt alle Einträge in umgekehrter chronologischer Reihenfolge aus
Dies geht auch in Verbindung mit einer Abfrage:
<loop Name~=b
sort=->$Name<br></loop> |
Gibt alle Einträge, bei denen das Feld "Name" mit "b"
anfaengt, in umgekehrter Reihenfolge aus, also z.B. "Baumann",
"Baffke", "baller", "Bachmann" usw.
Sie können auch mehrere Felder bei "sort" angeben. Die
Sortierung erfolgt dann zuerst nach dem ersten Feld, dann nach dem
zweiten, dem dritten usw.
<loop Name~=ba
sort=Name,Vorname,-Alter>$Name, $Vorname
($Alter)<br></loop> |
Gibt alle Einträge aus, bei denen das Feld "Name" mit
"ba" anfaengt, sortiert nach den Feldern "Name",
"Vorname" und "Alter" (letzteres in umgekehrter
Reihenfolge), also z.B. "Bachmann, Stefan (31)", "Bachmann,
Stefan (11)", "Baumann, Arndt (41)", "Baumann, Claudia
(42)", "Baumann, Thorsten (32)", "Baumann, Thorsten
(7)", "Baffke, Karen (27)", usw.
Aufruf über URL:
Sie können alle obigen Beispiele auch in der URL verwenden, z.B.:
http://baseportal.de/cgi-bin/baseportal.pl?
htx=/sepperl/adressen&Name==*&sort=- |
Gibt alle Einträge, sortiert nach dem Feld "Name", in
umgekehrter Reihenfolge aus (Schneller als ein "sort=-Name " !) |