2012-12-17 10 views
5

ho il seguente:Mysql Ordina per cognome quando il nome completo per la colonna

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) 

Sto semplicemente cercando di risolvere per cognome degli utenti.

Tuttavia, mentre può ordinare per nome, il cognome è bacato. Se l'utente ha virgolette intorno al loro nome (ad esempio "Abigail Martinez", l'ordinamento verrà errato.) Se l'utente fornisce un solo nome ed è un nickname (cioè Juan), allora lo renderà anche errato. c'è iniziali intermedie (es. Tiffany S Villa o Steve de la Makinov). Purtroppo, questo utilizza solo una colonna per il nome completo (users.name).

Ogni aiuto è apprezzato. Grazie!

risposta

0

se è il caso cercare di ottenere tutte le righe e quindi può tentare con mysql_real_escape_string. in modo che non sarà avere citazioni. sarà qualcosa di simile.

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

Io non sono troppo sicuro prestazioni saggio se il suo bene ad andare per esso o no ..

Spero che questo aiuta maggio

6

substring_index(TRIM(users.name), ' ', -1) Aggiunta TRIM rimuoverà gli spazi finali. Successivamente, l'ordinamento avviene come previsto.

Problemi correlati