-
Calcul dans un ORDER BY
Bonjour, j'ai un problème dans une requete pg, je voudrais faire en sorte que les resultats soient triés par ratio de deux des champs de la meme table
ex de ma requete :8O
SELECT * FROM users ORDER BY "NOTE"/"NB_VOTE"
J'ai essayé avec parentheses sans paretheses et un bon nombre de formes sans succes :evilred:, quelqu'un aurait'il une idée pour regler mon problème ?? :oops:
Merci d'avance :)
-
je ne pense pas que tu puisses trier tes lignes sur une colonne qui ne figure pas dans le select !!!
donc, spécifie les colonnes que tu veux affiché à la place de * ainsi que le ratio.
SELECT colonne1, colonne2,...,NOTE/NB_VOTE AS RATIO FROM users ORDER BY RATIO
-
Bien sûr que si.
Par contre, je me demande pourquoi tu mets dans double guillemets autour des noms des colonnes. Donc, dans un premier temps, j'essaierais sans guillemets doubles. Dans un second temps, si ça ne marche toujours pas, copie la requête ET l'erreur dans ce thread.
-
+1, tu peux ordonner par n'importe quelle expression, je pense que c'est ton expression qui est mal écrite
Code:
SELECT * FROM users ORDER BY NOTE/NB_VOTE
ça devrait marcher
(je te déconseille de généraliser les capitales, en passant)
Sakalam
-
Postgresql est sensible à la casse et pour lui users est bien différent de USERS. Par défaut, tous les noms de tables, colonnes, etc sont interprétés en minuscules.
Donc si tu fais un select * from USERS, postgresql (la version que j'utilise en tout cas) exécutera en fait select * from users; Or si ta tables s'appelle vraiment USERS (et non users), il te renverra une erreur !!!
La seule solution pour empêcher cela est l'utilisation des ". D'où la requête initiale d'ant0inep. Dans ce cas, la requête select * from USERS sera bien exécutée sans problème.
Bref, dans postgres plus encore que dans n'importe quel SGBD, il faut éviter l'utilisation des majuscules ...
Concernant le problème de ta requête, s'il ne s'agit pas d'un problème de casse, je pense que le mieux est en effet de poster la requête et l'erreur.