mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 07.12.2016 19:41 Benutzername: Passwort: Auto-Login

Thema: Sortieren mit MySQL vom 27.06.2004


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Sortieren mit MySQL
Seite: 1, 2  Weiter
Autor Nachricht
slein
Threadersteller

Dabei seit: 02.10.2002
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst So 27.06.2004 20:30
Titel

Sortieren mit MySQL

Antworten mit Zitat Zum Seitenanfang

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 * Ich bin unwürdig *

ROCK 'N ROLL

der die das sleiN

Ach ja ... DANKE im Vorraus * Ja, ja, ja... *
  View user's profile Private Nachricht senden
Waschbequen
Account gelöscht


Ort: -

Verfasst So 27.06.2004 21:25
Titel

Antworten mit Zitat Zum Seitenanfang

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
Anzeige
slein
Threadersteller

Dabei seit: 02.10.2002
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst Mo 28.06.2004 07:53
Titel

Werden wir konkreter...

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 28.06.2004 08:27
Titel

Antworten mit Zitat Zum Seitenanfang

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: 35
Geschlecht: Männlich
Verfasst Mo 28.06.2004 14:27
Titel

Antworten mit Zitat Zum Seitenanfang

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!!!! Au weia!
Und brint mich nicht wirklich weiter *hu hu huu*
  View user's profile Private Nachricht senden
Waschbequen
Account gelöscht


Ort: -

Verfasst Mo 28.06.2004 14:50
Titel

Antworten mit Zitat Zum Seitenanfang

Mit etwas nachdenken solltest du sowas aber schon verstehen, bei dem was du vorhast... Menno!

Chr = Character. Chr(9*hehe* 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 Hmm...?!
 
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 28.06.2004 14:56
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel


Zuletzt bearbeitet von am Mo 28.06.2004 15:05, insgesamt 1-mal bearbeitet
 
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 39
Geschlecht: Männlich
Verfasst Mo 28.06.2004 15:31
Titel

Antworten mit Zitat Zum Seitenanfang

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 Grins

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
  View user's profile Private Nachricht senden
 
Ähnliche Themen [MySQL] Suchindizierung Einträge sortieren
Datensätze aus MySQL-Datenbank sortieren...
MYSQL Datum Abfrage Sortieren
[PHP, MySQL] Datenbank Abfrage sortieren
[PHP, MySQL] Datenbank Abfrage nach Datum sortieren
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.