2011-07-26 2 views
1

cette requête est tout simplement pas en ordre de résultats la façon dont je veux à:simple commande par clause ne fonctionne pas avec jointure interne

$sql = mysql_query("select s.*, p.label, p.number 
        from `sales` as s 
        left join `pumps` as p on (p.id = s.id_pump) 
        where s.the_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) 
        order by CAST(s.amount_sale AS int) desc 
        limit 1") or die(mysql_error()); 

Je reçois une erreur de MySQL.

+0

Nevermind, amount_sale est un VARCHAR. existe-t-il un moyen de le convertir en nombre entier dans cette requête afin qu'il soit correctement commandé? – scarhand

+0

cast (s.amount_sale as int) –

+0

'ORDER BY CAST (s.amount_sale AS int)' –

Répondre

2

Essayez la coulée VARCHAR à un entier signé:

$sql = mysql_query("select s.*, p.label, p.number 
        from `sales` as s 
        left join `pumps` as p on (p.id = s.id_pump) 
        where s.the_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) 
        order by CAST(s.amount_sale AS SIGNED) desc 
        limit 1"); 
+1

parfait merci! le lancer comme un int jetait une erreur. J'ai appris une nouvelle fonction aujourd'hui ... yay. – scarhand

+0

heureux que cela a fonctionné :) – Alp

Questions connexes