Tri par numéro de colonne

Tri par numéro de colonne - SQL/NoSQL - Programmation

Marsh Posté le 11-10-2002 à 14:10:48    

Salut,
 
Je cherche à trier une requête SQL en précisant non pas le nom du champ, mais son indice.
Un exemple de table :  
       communes : ref, nom
Ma requête :
       SELECT * FROM communes ORDER BY "deuxième colonne" !!!
(je ne veux pas utiliser ORDER BY nom, car ça doit pouvoir servir pour d'autres tables...).
Merci de votre aide !

Reply

Marsh Posté le 11-10-2002 à 14:10:48   

Reply

Marsh Posté le 11-10-2002 à 14:11:40    

Order by 1 ou autre
 
Mais ça doit pas marcher avec *, étant donné que * ne garantis aucunement l'ordre des colonnes.

Reply

Marsh Posté le 11-10-2002 à 14:15:05    

MagicBuzz a écrit a écrit :

Order by 1 ou autre
 
Mais ça doit pas marcher avec *, étant donné que * ne garantis aucunement l'ordre des colonnes.




 
Ca marche nickel !!! Comme quoi, des fois faut pas chercher midi à quatorze heure... Merci pour ton aide.
 
Et si on veut récupérer seulement les 2 premières colonnes, comment on fait ? "SELECT 1,2 FROM commune" ça marche pas !!! :non:  (j'ai essayé de trouver midi à midi, mais ça marche pas à tous les coups...)


Message édité par Dertron le 11-10-2002 à 14:17:44
Reply

Marsh Posté le 11-10-2002 à 14:17:35    

OK. C'est tout de même étonnant que avec * ça marche.
 
Si tu as un moyen de ne pas passer par *, fais-le, ça sera plus propre et plus portable. Et surtout ça t'évitera des bugs si un jour du modifie la structure de la table ;)

Reply

Marsh Posté le 11-10-2002 à 14:19:25    

MagicBuzz a écrit a écrit :

OK. C'est tout de même étonnant que avec * ça marche.
 
Si tu as un moyen de ne pas passer par *, fais-le, ça sera plus propre et plus portable. Et surtout ça t'évitera des bugs si un jour du modifie la structure de la table ;)




 
Oui d'accord, mais il faut que j'arrive à faire mes select sur les numéros de champ, et non sur leur nom... (cf mon sujet précédent !)

Reply

Marsh Posté le 11-10-2002 à 14:24:34    

Explique plus en détail ce que tu veux faire.
 
Parceque notamment, pour savoir si tu trie sur la colonne 1, 2 ou 20, il faut bien que tu aies connaissance de la structure de la table non ?

Reply

Marsh Posté le 11-10-2002 à 16:13:50    

MagicBuzz a écrit a écrit :

Explique plus en détail ce que tu veux faire.
 
Parceque notamment, pour savoir si tu trie sur la colonne 1, 2 ou 20, il faut bien que tu aies connaissance de la structure de la table non ?




 
Ben non, en fait, puisque le principe, c'est d'avoir une requête qui marche pour toute une famille de tables qui sont construites sur le même modèle. A savoir :  
    premier champ : référence
    deuxième champ : nom (égal au nom de la table)
    troisième champ et suivants : variable selon les tables.
J'ai besoin d'une requête qui devra toujours retourner la référence, le premier champ (dont le nom varie en fonction du nom de la table), le tout trié selon le deuxième champ.
J'utilise SELECT * FROM matable  ORDER BY 2
C'est bien, mais je promène tous les champs de ma table, alors que je n'ai besoin que des deux premiers... Comment faire, donc, pour ne sélectionner que les deux premiers champs .

Reply

Marsh Posté le 11-10-2002 à 16:15:01    

renomer proprement tes champs :D

Reply

Marsh Posté le 11-10-2002 à 16:21:58    

MagicBuzz a écrit a écrit :

renomer proprement tes champs :D




 
Ben justement, c'est pas forcément une bonne idée, car dans un soucis de relecture, on essaie toujours de mettre des noms parlants, au lieu de noms génériques. Sinon, c'est sur, je peux toujours appeler le champ 1 "champ1" et le champ 2 "champ2"... Enfin, c'est peut-être un débat philosophique (quoi que...), mais tu n'as donc pas une idée pour adresser directement les colonnes ?
Sinon, merci quand même pour le coup de main !

Reply

Marsh Posté le 11-10-2002 à 16:25:31    

Ben tu peux mettre "ref" pour le premier et "tablename" pour le second par exemple (quoique j'ai pas tout compris ce qu'est ce second champs)
 
Puis pour les autres champs tu les laisse comme ils sont vu que tu ne t'en sert pas...

Reply

Marsh Posté le 11-10-2002 à 16:25:31   

Reply

Marsh Posté le 11-10-2002 à 16:34:43    

il est peut etre possible de recuperer avant le nom des 2 premieres colonnes en faisant un select du nom de la table dans allobjets

Reply

Marsh Posté le 11-10-2002 à 16:35:37    

vttvolant a écrit a écrit :

il est peut etre possible de recuperer avant le nom des 2 premieres colonnes en faisant un select du nom de la table dans allobjets




yep, c'est pas bête ça :jap:
 
un peu lourd mais bon :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed