2012-08-24 5 views
2

Je suis en train d'exécuter cette requête:bizarre ORDRE PAR Mysql

SELECT m.name 
    FROM ".table."modules as m 
    LEFT JOIN ".table."module_page as p 
    ON m.id = p.id 
    LEFT JOIN ".table."pages as pa 
    ON p.pages = pa.id 
    WHERE p.pages = '1' AND m.section = '2' 
    ORDER BY 'm.order' ASC 

Et comme vous pouvez le voir, je commande les éléments croissant. Mais je ne sais pas pourquoi mais il sort comme ceci:

id section active order name 
    9  2   1   1  content_starter 
    10 2   1   3  Agenda 
    11 2   1   2  Nieuws 
    12 2   1   4  Sidebar 

Il ordonne par id. Mais pourquoi?

Merci d'avance!

Grtz, Bram

Répondre

8

'm.order' est une constante statique, de sorte que vous avez vraiment pas d'ordre ici. Supprimez les citations autour du nom de la colonne.

+0

+1. Une chaîne entre guillemets, telle que «m.order», est appelée «chaîne littérale» dans la documentation de MySQL, plutôt que comme une «constante statique». http://dev.mysql.com/doc/refman/5.1/en/string-literals.html – spencer7593

+1

@ spencer7593: po-tay-to, po-tah-to. –

+0

Je ne faisais que souligner ce que MySQL appelle (et ce que la plupart des bases de données relationnelles l'appellent). Nous ne faisons généralement pas référence à une chaîne de constantes statiques C++ en tant que "littéral". Nous ne faisons pas non plus référence à un littéral de chaîne SQL en tant que "constante statique". – spencer7593