Autor |
Nachricht |
slein
Threadersteller
Dabei seit: 02.10.2002
Ort: -
Alter: 42
Geschlecht:
|
Verfasst So 27.06.2004 20:30
Titel Sortieren mit MySQL |
|
|
Heeeellaauuuu.
So zum heutigen Sonntag noch 'ne kleine Frage...
Habe 'ne Tabelle mit lauter Daten zu Personen.
Wollte diese nun je nach Anfangsbuchstaben des Vornamens gruppiert darstellen.
Also alle "A's" zusammen in 'ner Tabelle, alle "B's" zusammen ... u.s.w.
Hab nur kein Plan, wie ich das am elegantesten löse.
Ich weiß aber, das "ihr" es wisst
ROCK 'N ROLL
der die das sleiN
Ach ja ... DANKE im Vorraus
|
|
|
|
|
Waschbequen
Account gelöscht
Ort: -
|
Verfasst So 27.06.2004 21:25
Titel
|
|
|
Etwas konkreter musst du schon werden.
Im Allgemeinen kannst du per
Code: | Order By Feldname Asc, Feldname Desc |
sortieren - wobei Asc für ascending (aufsteigen) und desc für descending (absteigend) steht - es lassen sich beliebig viele Felder kommasepariert angeben. Wenn du nun einzelne Datagrids (Tabellen!?) haben willst, musst du entweder für jeden einzelnen Buchstaben eine Abfrage machen, à la
Code: | Select * From Tabelle Where Feld Like 'a%' |
(Ich glaube in MySQL ist die Wildcard *, anstatt % - k.A.), oder in deinem Script das Zeug auseinanderklamüsern.
|
|
|
|
|
Anzeige
|
|
|
slein
Threadersteller
Dabei seit: 02.10.2002
Ort: -
Alter: 42
Geschlecht:
|
Verfasst Mo 28.06.2004 07:53
Titel Werden wir konkreter... |
|
|
Nächster Versuch...
will halt meine Datensätze etwas übersichtlicher darstellen und sie je nach Anfangsbuchstaben, gruppenweise darstellen.
Also ungefähr so:
Zitat: |
-A-
Anders, Thomas
Ahlers, Klaus-Dieter
-B-
Bohlen, Dieter
Behrendt, George
-F-
Frings, Thorsten
|
... das ganze will ich dann in 'ner 2Spaltigen Tabelle darstellen - also A-M in der linken, N-Z in der rechten Spalte.
ROCK 'N ROLL
der die das sleiN
Zuletzt bearbeitet von slein am Mo 28.06.2004 07:54, insgesamt 1-mal bearbeitet
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 28.06.2004 08:27
Titel
|
|
|
Beitrag gelöscht.
Zuletzt bearbeitet von am Mo 28.06.2004 08:28, insgesamt 1-mal bearbeitet
|
|
|
|
|
slein
Threadersteller
Dabei seit: 02.10.2002
Ort: -
Alter: 42
Geschlecht:
|
Verfasst Mo 28.06.2004 14:27
Titel
|
|
|
Desert hat geschrieben: | pseudocode:
Code: |
for($n=96;$n<=127;$n++) {
print chr($n);
$datenbank->query("select * from xxx where name LIKE UPPER(".chr($n).")%");
}
|
|
kapier ich gar nicht!!!!
Und brint mich nicht wirklich weiter
|
|
|
|
|
Waschbequen
Account gelöscht
Ort: -
|
Verfasst Mo 28.06.2004 14:50
Titel
|
|
|
Mit etwas nachdenken solltest du sowas aber schon verstehen, bei dem was du vorhast...
Chr = Character. Chr(9 steht zum Beispiel für das kleine B (b). Da das Alphabet 26 Buchstaben kennt, musst du also ne Schleife über 26 Runden laufen... ähm naja, der Rest muss sich eigentlich von selbst erklären
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 28.06.2004 14:56
Titel
|
|
|
Das ist aber quasi Schrott, da du hier mit zig SELECT-Statements die Datenbank bombadierst. HIer ist eine - zugegeben nicht sehr elegante, doch praktikable Lösung:
Code: | <?
$conn=mysql_connect("localhost", "root", "");
mysql_select_db("order", $conn);
$query="SELECT id, LEFT(name,1), name FROM name GROUP BY name";
$query=mysql_query($query, $conn);
echo "<table width='200' border='1'>";
echo "<tr>";
echo "<td width='100' valign='top'>";
$oldres="";
$int=0;
while($results=mysql_fetch_row($query)) {
$newres=$results[1];
$int++;
if ($int%7==0) {
echo "</td><td width='100' valign='top'>";
}
if ($oldres!=$newres) {
echo "<h3>".$results[1]."</h3>";
$oldres=$results[1];
}
echo $results[0]." ".$results[1]." ".$results[2]."<br/>";
}
echo "</td>";
echo "</tr>";
echo "</table>";
?> |
//
Hier mit ein wenig preudocode, um das ganze auf 2 Spalten aufzuteilen. Bei Fragen => PN
Zuletzt bearbeitet von am Mo 28.06.2004 15:05, insgesamt 1-mal bearbeitet
|
|
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Mo 28.06.2004 15:31
Titel
|
|
|
Wieso redet ihr denn alle von Pseudocode, wenn ihr PHP-Code postet?
http://de.wikipedia.org/wiki/Pseudocode
http://www.net-lexikon.de/Pseudocode.html
BTW: Die 26 Datenbankabfragen halte ich nicht für ein Problem, solange die Verbindung nicht nach jeder Abfrage wieder geschlossen wird.
Ich würde das hier wohl mit mehreren Abfragen versuchen. Wenn's spürbar langsam sein sollte, könntest Du es später immer noch ändern... aber das Verbinden zur DB nicht die meiste Zeit in Anspruch. Solche Abfragen gehen recht schnell.
Wieviele Daten stehen in der Tabelle? Was willst Du denn genau machen? Um Suchabfragen zu beschleunigen, könntest Du evtl. einen Indices über deine Spalten legen. Aber kommt drauf an, was Du da so alles abfragen willst.
Zuletzt bearbeitet von rob am Mo 28.06.2004 15:37, insgesamt 2-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
MYSQL Datum Abfrage Sortieren
[MySQL] Suchindizierung Einträge sortieren
[PHP, MySQL] Datenbank Abfrage sortieren
Datensätze aus MySQL-Datenbank sortieren...
[PHP, MySQL] Datenbank Abfrage nach Datum sortieren
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
|
|