2012-12-17 4 views
5

Ich habe folgendes:Mysql Sortieren nach Nachname, wenn vollständigen Namen für die Spalte

SELECT * FROM users LEFT JOIN user_info ON users.id=user_info.user_id 
       WHERE 
        ((user_info.tester != 1) OR (user_info.tester is null)) AND 
        id in (SELECT explicituser_id FROM user_login WHERE (created < '2012-12-17' OR created >= date_add('2012-12-17', interval 1 day))) AND 
        id IN (SELECT participte_id FROM roster WHERE roster_id IN (6)) 
       order by 
        substring_index(users.name, ' ', -1) 

Ich bin einfach durch den Benutzer Nachnamen zu sortieren versuchen.

Während es nach dem Vornamen sortieren kann, ist der Nachname jedoch fehlerhaft. Wenn der Benutzer Anführungszeichen um seinen Namen hat (zB "Abigail Martinez" wird die Sortierung falsch sein. Wenn der Benutzer nur einen Namen angibt, und es ist ein Nickname (zB Juan), dann wird es auch falsch machen. Und dann es gibt Initialen (dh. Tiffany S Villa oder Steve de la Makinov). Leider ist dies verwendet nur eine Spalte für den vollständigen Namen (users.name).

Jede Hilfe ist willkommen. Dank!

Antwort

0

wenn es der Fall ist, versuchen, alle Zeilen zu erhalten und dann versuchen, mit mysql_real_escape_string., so dass Sie keine Anführungszeichen, die sein werden. es so etwas wie das sein wird.

$row['new_name'] = mysql_real_escape_string($row['name']); 

Ich bin mir nicht sicher, ob Leistung klug sein gutes für sie gehen oder nicht ..

Hope this may hilft

6

substring_index(TRIM(users.name), ' ', -1)TRIM abschliessende Leerzeichen entfernen Hinzufügen. Danach erfolgt die Sortierung wie erwartet.