La query non viene ordinata correttamente

Ho questa domanda che sto usando. Ho bisogno di ordinarlo per $variis , ma sembra che l'sorting non funzioni. Ho verificato i nomi e le tabelle dei campi. Tutto è corretto ma non lo $variis :

Codice:

 //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_arrays($query)) { $row1 = $row['row_name']; print("$row1"); } } 

Ok un aggiornamento: ho selezionato il field dello status e l'ho visualizzato. Per tutte queste righe che vengono restituite, lo stato no help needed è di no help needed quando il $variis effettivamente need help

Si prega di leggere il manuale: http://dev.mysql.com/doc/refman/5.1/en/union.html

Per utilizzare una clausola ORDER BY o LIMIT per ordinare o limitare l'integer risultato UNION, scegliere tra parentesi le singole istruzioni SELECT e inserire ORDER BY o LIMIT dopo l'ultima. Nell'esempio seguente vengono utilizzate entrambe le clausole:

 (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; 

prova questo:

 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' 

invece di usare * e help_box.status = '$ variis' * nella clausola where, usarlo nel join

Credo per "sorta", vuoi dire "filter". Dovresti includere la tabella help_box nella tua clausola FROM each volta che hai bisogno di help_box.status nella tua clausola WHERE. Solo allora può funzionare.