Jump to content

Frage zu ORDER BY


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo SQL-Experten,

als blutiger Neuling brauche ich dringend eure Hilfe ;-)

 

Ich habe eine Tabelle mit einer Personennamen-Spalte und möchte die Namen mit WHERE auslesen, und zwar über den Anfangsbuchstaben des Nachnamens. Dummerweise habe ich Vor- und Nachnamen in einem Feld angelegt. Trotzdem habe ich es geschafft, den Nachnamen folgendermaßen anzusprechen (in diesem Fall nach Buchstabe H):

... WHERE name LIKE '% H%' ORDER BY name ASC

Jetzt möchte ich aber die Suchergebnisse sortieren lassen, und zwar innerhalb der Nachnamen (also Harrer, Heinrich, Hoffmann, Hubert). Dies klappt mit obigem Beispiel leider nicht, da Vor- und Zuname ein Feld sind und er eben vorne mit dem Vornamen zu sortieren beginnt.

 

Gibt es eine Möglichkeit, dies zu bewerkstelligen, vielleicht mit regulären Ausdrücken oder so?

 

Vielen Dank für eure Hilfe im voraus :-)

 

Gruß, Andreas

Geschrieben (bearbeitet)

Hi

 

Ich muss dir jetzt sicher nicht sagen, dass du "Name" und "Vorname" trennen sollst oder?!

 

... WHERE name LIKE '% H%' ORDER BY SUBSTRING(name,CHARINDEX(' ',name,0)+1,Len(name)-CHARINDEX(' ',name,0))

 

 

Gruß

bearbeitet von Pathomorph
Geschrieben

Hallo Pathomorph, danke für deine schnelle Antwort!

 

Ich habe deinen Code original so eingefügt, jedoch bekomme ich folgende Fehlermeldung:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given

Woran könnte es liegen?

 

Gruß, Andreas

Geschrieben

Wahnsinn, super, danke, das funktioniert  :D

 

Jetzt habe ich aber doch noch ein Problem. Ich habe nicht bedacht, dass manche Personen zwei Vornamen haben. Bei diesen Einträgen funktioniert das natürlich doch nicht mehr. Hast du auf die Schnelle auch dafür eine Lösung?

Geschrieben

Mach es bitte gleich richtig und erzeuge ein neues Attribut (Feld) "Nachname"

Dann kannst du das Attribut "name" parsen und den Nachnamen in das neue Feld einfügen. Schau mal hierfür die mySQL-Funktion "SUBSTRIING_INDEX" mal an.

 

 

UPDATE blablaTable SET Nachname = SUBSTRING(name,' ',-1)

 

Damit wird bei einer Splittung des Feldes "name" das 1. rechte Element ermittelt...

 

Dann kannst du dein ORDER BY mit dem Attribut "Nachname" regulär verwenden... 

 

Mach es gleich richtig. Wer weiß, was dir morgen wieder einfällt... ;-)

 

Gruß

Geschrieben

Ja, ihr habt natürlich vollkommen recht. 

 

@Pathomorph: Habe nun eine neue Spalte "nachname" angelegt und weiter so verfahren, wie du beschrieben hast. Hat alles bestens funktioniert, jetzt läuft die Sortierung perfekt.

 

Vielen Dank  :jau:

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...