Andreas2014 0 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 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 Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 (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 3. April 2014 von Pathomorph Zitieren Link zu diesem Kommentar
Andreas2014 0 Geschrieben 3. April 2014 Autor Melden Teilen Geschrieben 3. April 2014 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 Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 Du hast auch nicht gesagt, dass es sich hier um mySQL handelt... Wir sind hier auch im "MS SQL Server Forum".. Schau mal hier: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html Ersetz "CHARINDEX(' ', name,0)" durch INSTR(' ', name) Zitieren Link zu diesem Kommentar
Andreas2014 0 Geschrieben 3. April 2014 Autor Melden Teilen Geschrieben 3. April 2014 Oh, sorry, wie gesagt, ich bin sowas von Neuling :rolleyes: Ich werde mir den Link mal anschauen, hoffentlich komme ich klar. Gruß, Andreas Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 na ja.. SQL ist nicht gleich SQL. Die Syntax ist gleich aber die "Build-In"-Funktionen sind teilweise unterschiedlich: Statt CHARINDEX benutzt du INSTR Statt LEN benutzt du LENGTH Zitieren Link zu diesem Kommentar
Andreas2014 0 Geschrieben 3. April 2014 Autor Melden Teilen Geschrieben 3. April 2014 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? Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 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ß Zitieren Link zu diesem Kommentar
Andreas2014 0 Geschrieben 3. April 2014 Autor Melden Teilen Geschrieben 3. April 2014 Das wäre natürlich das optimale ;) Ich werde mir das morgen in Ruhe anschauen, danke noch mal. Gute Nacht. Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 Gern Zitieren Link zu diesem Kommentar
Daniel -MSFT- 129 Geschrieben 3. April 2014 Melden Teilen Geschrieben 3. April 2014 Und was machst Du, wenn es ein 'von irgendwas' ist? Wenn also der Nachname aus mehreren Worten besteht? Zitieren Link zu diesem Kommentar
Andreas2014 0 Geschrieben 4. April 2014 Autor Melden Teilen Geschrieben 4. April 2014 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: Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 4. April 2014 Melden Teilen Geschrieben 4. April 2014 Hast du das Feld "name" auch um den Nachnamen bereinigt, so dass hier nur der Vorname drin steht?! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.