2016-04-03 37 views
0

我有一個查詢:PHP MySQL的ORDER BY無法按照預期工作

$team_member_result = mysql_query("SELECT * FROM teams 
      WHERE team_creator LIKE '%,$player_main_id,%' 
       OR team_owner LIKE '%,$player_main_id,%' 
       OR team_leaders LIKE '%,$player_main_id,%' 
       OR team_captains LIKE '%,$player_main_id,%' 
       OR team_members LIKE '%,$player_main_id,%' 
      ORDER BY team_creator ASC, team_owner ASC, 
         team_leaders ASC, team_captains ASC, 
         team_members ASC"); 

它工作在開始,但如果成員不是一個創造者,它開始排序無序的,所以基本上如果他們是一個成員它會在他們成爲領導者之前展現出來。

不確定該怎麼辦,

謝謝!

+0

在每個'LIKE'中有兩件事你有開始和結尾','我認爲這是不正確的。第二個你想要的第一個條件首先在'ORDER BY'子句 –

+0

樣本數據會有幫助。看起來你使用set數據類型在字段中存儲多個值,在這種情況下,特殊的[set functions(比如find_in_set)](http://dev.mysql.com/doc/refman/5.7/en/ set.html)可能會有所幫助 – xQbert

回答

1

主要問題是您的表格不在Third normal form中。因爲你試圖開發一個最終不起作用的SQL查詢,特別是ORDER BY部分(除了已經提到的帶逗號的LIKE過濾器外)。

將您的表放入3NF中,然後您可以編寫一個有意義的ORDER BY語句。

btw .:不要再使用mysql_*()的功能,它們是deprecated。改爲使用PDO