Запрос не сортируется должным образом

У меня есть этот запрос, который я использую. Мне нужно отсортировать его по $variis , но, похоже, сортировка не работает. Я дважды проверял имена полей и таблицы. Все правильно, но он не будет сортировать его по $variis :

Код:

 //Unseen $variis = "Need Help"; $myid = This is the user's id; $sql = "select car_help.car_id, agent_names.agent_name, help_box.status, car_help.why_car, car_help.date_time_added, car_help.just_date, car_help.type, agent_names.agent_id from car_help LEFT JOIN agent_names on car_help.agent_whois = agent_names.agent_id where agent_names.system_id = '$myid' and car_help.system_id='$myid' and added_by <> '$myid' and help_box.status = '$variis' UNION select magazine_help.note_id, agent_names.agent_name, help_box.status, magazine_help.note_name, magazine_help.date_time_added, magazine_help.just_date, magazine_help.type, agent_names.agent_id from magazine_help LEFT JOIN agent_names on magazine_help.agent_id = agent_names.agent_id where agent_names.system_id='$myid' and magazine_help.system_id = '$myid' and added_by <> '$myid' and help_box.status = '$variis' UNION select motorcycle_help.rand_id, agent_names.agent_name, help_box.status, motorcycle_help.rand_name, motorcycle_help.date_time_added, motorcycle_help.just_date, motorcycle_help.type, agent_names.agent_id from motorcycle_help LEFT JOIN agent_names ON motorcycle_help.by_who = agent_names.agent_id where agent_names.system_id = '$myid' and motorcycle_help.system_id='$myid' and added_by <> '$myid' and help_box.status = '$variis' UNION select mobile_questions.bal_test_id, agent_names.agent_name, help_box.status, mobile_questions.bal_why, mobile_questions.date_time_added, mobile_questions.just_date, mobile_questions.type, agent_names.agent_id from mobile_questions LEFT JOIN agent_names ON mobile_questions.agent_who_ordered = agent_names.agent_id where agent_names.system_id = '$myid' and mobile_questions.system_id='$myid' and added_by <> '$myid' and help_box.status = '$variis' ORDER BY date_time_added DESC LIMIT $startrow, 20"; $result = mysql_query($sql); $query = mysql_query($sql) or die ("Error: ".mysql_error()); if ($result == "") { echo ""; } echo ""; $rows = mysql_num_rows($result); if($rows == 0) { print(""); } elseif($rows > 0) { while($row = mysql_fetch_array($query)) { $row1 = $row['row_name']; print("$row1"); } } 

Ок-обновление: я выбрал поле status и отобразил его. Для всех этих строк, которые возвращаются, статус no help needed когда $variis действительно need help

Пожалуйста, прочтите руководство: http://dev.mysql.com/doc/refman/5.1/en/union.html

Чтобы использовать предложение ORDER BY или LIMIT для сортировки или ограничения всего результата UNION, скопируйте отдельные инструкции SELECT и поместите ORDER BY или LIMIT после последнего. В следующем примере используются оба предложения:

 (SELECT a FROM t1 WHERE a=10 AND B=1) UNION (SELECT a FROM t2 WHERE a=11 AND B=2) ORDER BY a LIMIT 10; 

попробуй это:

 from magazine_help LEFT JOIN agent_names on magazine_help.agent_id = agent_names.agent_id **and help_box.status = '$variis'** where agent_names.system_id='$myid' and magazine_help.system_id = '$myid' and added_by <> '$myid' 

вместо использования * и help_box.status = '$ variis' * в предложении where, используйте его в соединении

Я считаю, что «сортировка» означает «фильтр». Вы должны включать таблицу help_box в предложение FROM каждый раз, когда вам нужно help_box.status в вашем предложении WHERE. Только тогда он может работать.