2012-12-17 12 views
5

Mam następujący:Mysql Sortuj według nazwiska, gdy pełna nazwa w kolumnie

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) 

Ja po prostu próbuje uporządkować według nazwiska użytkowników.

Mimo że może sortować według imienia, nazwisko jest błędne. Jeśli użytkownik ma cytaty na temat swojego nazwiska (np. "Abigail Martinez", spowoduje to, że sortowanie będzie nieprawidłowe, jeśli użytkownik poda tylko jedną nazwę, a jest to pseudonim (np. Juan), to również spowoduje, że będzie ona niepoprawna. tam inicjały (np. Tiffany S willi lub Steve de la Makinov). Niestety, ten wykorzystuje tylko jedną kolumnę dla pełnej nazwy (users.name).

Każda pomoc jest mile widziana. Dzięki!

Odpowiedz

0

jeśli to jest przypadek staramy się wszystkie wiersze, a następnie może spróbować z mysql_real_escape_string., dzięki czemu nie będzie konieczności cytaty. to będzie coś takiego.

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

Nie jestem też pewien, czy jego wydajność mądry dobry, aby przejść do niego, czy nie ..

Nadzieja to maja pomaga

6

substring_index(TRIM(users.name), ' ', -1) Dodawanie TRIM usunie spacje. Następnie sortowanie odbywa się zgodnie z oczekiwaniami.