2012-12-17 29 views
5

Tôi đã điều sau đây:Mysql Sắp xếp theo tên trước khi ghi rõ họ tên cho cột

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) 

Tôi chỉ đơn giản là cố gắng để sắp xếp theo tên cuối cùng của người dùng.

Tuy nhiên, trong khi nó có thể sắp xếp theo tên, họ là lỗi. Nếu người dùng có dấu ngoặc kép xung quanh tên của họ (ví dụ: "Abigail Martinez" nó sẽ làm cho việc sắp xếp không đúng. Nếu người dùng chỉ cung cấp một tên, và đó là biệt danh (ví dụ: Juan), thì nó cũng sẽ làm cho nó không chính xác. có viết tắt giữa (tức. Tiffany S Villa hay Steve de la Makinov). Thật không may, điều này chỉ sử dụng một cột cho tên đầy đủ (users.name).

Any help is appreciated. Cảm ơn!

Trả lời

0

nếu nó là trường hợp cố gắng để có được tất cả các hàng và sau đó có thể thử với mysql_real_escape_string.để bạn sẽ không có dấu ngoặc kép, nó sẽ là một cái gì đó như thế này:

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

Tôi không quá chắc chắn hiệu suất khôn ngoan dù tốt của nó để đi cho nó hay không ..

Hy vọng điều này sẽ giúp may

6

substring_index(TRIM(users.name), ' ', -1) Thêm TRIM sẽ loại bỏ dấu không gian. Sau đó, phân loại xảy ra như mong đợi.

Các vấn đề liên quan