mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mo 05.12.2016 13:42 Benutzername: Passwort: Auto-Login

Thema: [PHP, MySQL] Sortierung bei Abfrage vom 04.11.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP, MySQL] Sortierung bei Abfrage
Seite: 1, 2  Weiter
Autor Nachricht
schwampf
Threadersteller

Dabei seit: 31.03.2002
Ort: Bremen
Alter: 36
Geschlecht: Männlich
Verfasst Fr 04.11.2005 13:33
Titel

[PHP, MySQL] Sortierung bei Abfrage

Antworten mit Zitat Zum Seitenanfang

Moinsen,

ich hab da ein Problemchen und absolut keine Lösung parat. Vielleicht hat ja jemand eine Idee. Es geht um folgendes:
In einer existierenden Datenbak gibt es eine Tabelle aus der Datensätze von Usern abgespeichert und wieder abgefragt werde. In der Tabelle gibt es ein Feld Namens 'zeUser', in der die Usernamen mit Vor- und Nachname gespeichert werden. Nun möchte der Mensch dem diese Datenbank gehört in der Abfrage eine Sortierfunktion, und zwar nach dem Nachnamen des Users. Allerding steckt der Nachname ja in dem String drin. bekommt man das irgendwie hin in der Abfrage? Man müsste also quasi die Strings 'Karl Meier', 'Erwin Schulze', 'Fred Feuerstein', bei der PHP-Abfrage nach dem Nachnamen sortieren. Eine nachträgliche Änderung der Tabelle mit 2 Feldern für vor- Und Nachname ist leider nicht möglich.

momentan sieht die Abfrage ca. so aus:
Code:

mysql_query("SELECT * FROM [Tabelle] GROUP BY zeUser");
  View user's profile Private Nachricht senden
Glas

Dabei seit: 24.05.2003
Ort: Bremen
Alter: 34
Geschlecht: Männlich
Verfasst Fr 04.11.2005 13:46
Titel

Antworten mit Zitat Zum Seitenanfang

Als workaround würde ich vorschlagen, die Namen (also die zeUser) in Vor- und Nachname zu spiltten (explode(); ), und anschliessend das array mit den Nachnamen zu sortieren.

Ist allerdings recht unsauber wie ich finde .... zumal ich ja nicht weiß wieviele Datensätze du zu verarbeiten hast. Aber irgendwann wirds hässlich. Rein von der Geschwindigkeit her ...


Zuletzt bearbeitet von Glas am Fr 04.11.2005 13:49, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
gtz

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Fr 04.11.2005 13:47
Titel

Antworten mit Zitat Zum Seitenanfang

bieg dem tüpen bei, er soll seine datenabnk mal überarbeiten.

du könntest allerdings auch irgendwelche substrings aus zeuser selecten und danach sortieren.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Glas

Dabei seit: 24.05.2003
Ort: Bremen
Alter: 34
Geschlecht: Männlich
Verfasst Fr 04.11.2005 13:48
Titel

Antworten mit Zitat Zum Seitenanfang

gtz hat geschrieben:
bieg dem tüpen bei, er soll seine datenabnk mal überarbeiten.


Ist wohl wirklich die beste Möglichkeit.

Was sprichtn dagegen, ne weitere Spalte einzufügen. Bzw. wer is auf die Idee gekommen, Vor-und Nachname in eine Spalte zu kloppen?
  View user's profile Private Nachricht senden
lordle

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 40
Geschlecht: Männlich
Verfasst Fr 04.11.2005 17:12
Titel

Antworten mit Zitat Zum Seitenanfang

also so kannst Du mit der Datenbank erstmal nix abfragen. auch das "explode" bringt nicht wirklich verbesserungen, es sei denn, in der Datenbank sind nur 20 hanseln.
der sinn einer Datenbank ist ja, dass diese vorsortiert und nicht die Anwendung?
warum soll ich mir alle datensätze ziehen, nur um *danach* irgendwie in der Anwendung ein Feld aufzusplitten und danach zu sortieren?

Es führt kein Weg vorbei, sollte es perfomant werden => min. zwei spalten.

Das nächste Problem wird wohl sein, ob sich jeder beim Eintragen in die Datenbank an die Konvention <VORNAME NACHNAME> gehalten hat was machst du, wenn nur <NACHNAME> drinsteht, oder <NACHNAME VORNAME> oder <VORNAME ZWEITER_VORNAME NACHNAME> oder gar <TITEL VORNAME NACHNAME>, etc. pp.!??
dann kannste nämlich das explode schon von vornherein knicken oder alle Eventualitäten, die vorkommen können abfangen und dann entsprechend reagieren.... * Ich geb auf... *

also immer saubere Datenbankstruktur vorhalten und keine Probleme haben...
  View user's profile Private Nachricht senden
gtz

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Fr 04.11.2005 17:23
Titel

Antworten mit Zitat Zum Seitenanfang

lordle hat geschrieben:
also so kannst Du mit der Datenbank erstmal nix abfragen. auch das "explode" bringt nicht wirklich verbesserungen, es sei denn, in der Datenbank sind nur 20 hanseln.
der sinn einer Datenbank ist ja, dass diese vorsortiert und nicht die Anwendung?
warum soll ich mir alle datensätze ziehen, nur um *danach* irgendwie in der Anwendung ein Feld aufzusplitten und danach zu sortieren?


das is auch nich der punkt. wenn die datenbank denn so bleiben muss, dann tu folgendes:

entsprechende spalte REVERSE()n, erstes leerzeichen finden, SUBSTRING() bis zu der position, und hinterher wieder REVERSE()n.

aber deine datenbank wird dir ins gesicht springen, denn son select kann man wirklich kaum noch als performant bezeichnen.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
way2hot

Dabei seit: 14.03.2004
Ort: Jüchen-Gierath
Alter: 34
Geschlecht: Männlich
Verfasst Fr 04.11.2005 17:35
Titel

Antworten mit Zitat Zum Seitenanfang

Wäre es nicht möglich oder gar sinnvoll, einmalig mittels eines entsprechenden (explode-)Scripts die verhunzte Spalte in zwei Spalten aufzusplitten, um dann in Zukunft mit der vernünftigen DB arbeiten zu können? Problematisch könnte aber auch schon hierbei die von lordle angesprochene Eventualität mit den Namen bestehend aus mehr als zwei Teilen werden.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
gtz

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Fr 04.11.2005 18:01
Titel

Antworten mit Zitat Zum Seitenanfang

jetz hört doch mal auf mit dem zirkus. wenn der kunde diese datenbank hat und nich ändern will, weil er dann sein ganzes system ändern müsste, dann is das so und fertig. da muss man dann eben mit arbeiten.

und ja, es geht.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen MySQL/PHP sortierung
[PHP/MySQL] Sortierung einer Liste
(php-mysql) übergabe von formulardaten und abfrage m. mysql
[php+mysql] abfrage von x bis y
[PHP]Problem mit Mysql Abfrage
[PHP/MYSQL] Abfrage - Problem
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.