IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

changer l'ordre des colonnes


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Points : 46
    Points
    46
    Par défaut changer l'ordre des colonnes
    est ce que c'est possible de changer l'ordre de mes colonnes
    je veux que la 20e colonne soit en 1ere position par ex

    ou est ce qu'il faut recreer une nlle table

  2. #2
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 83
    Points
    83
    Par défaut Pas de numéro de ligne
    Bonjour,

    je ne suis pas totalement sûr de ce que je vais dire, mais je crois bien que parler de numéro de ligne des tables postgre n'a pas vraiment de sens. Il me semble que ce n'est pas exactement comme sur Excell. D'ailleurs je crois même avoir lu que pour une même requête (sans order by) il se peut qu'au cours du temps le renvoi des lignes ne soit pas toujours ordonné de la même manière pour la même table.

    Si tu veux pouvoir gérer l'ordre des lignes je pense qu'il faut que tu ajoutes un id_ligne que tu gère toi même -en particulier lorsque tu ajoutes une ligne tu devras veiller à modifier ton id_ligne pour toute les lignes d'id_ligne supérieur se mettent à jour, pareil à la suppression, etc... Et dans tes requêtes tu pourras ainsi faire un order by id_ligne.

    Ce que je dis est peut-être faux, quoiqu'il en soit ça aura le mérite de faire remonter ton post et peut-être que d'autres te renseigneront de manière plus sûr.

    Mais au fait, pourquoi as-tu besoin d'un numéro de ligne ?
    Est-ce une information qui cractérise tes données ?

    Cordialement,

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 83
    Points
    83
    Par défaut Sorry.
    Sorry j'ai lu ligne au lieu de colonne !

    Tu peux afficher tes colonnes dans un ordre donné :
    SELECT colonne_a_afficher_1 as colonne_2, colonne_a_afficher_2 as colonne1 FROM ma_table;

    Tu peux aussi les renommer. Par contre, effectivement pour modifier l'ordre dans la table je ne vois pas. A part créer une nouvelle table comme tu le dis ou bien passer par la création d'une colonne temporaire pour faire un update de tes colonnes. Mais cette seconde méthode peut-être bien plus longue à écrire comme a éxécuter à mon avis.

    Toutefois il est peut-être préférable d'écrire des scripts indépendants de l'ordre (réel) des colonnes dans la table, mais qui les arrangent au moment où tu t'en sers. Comme par exemple la ligne indiquée qui gère l'arrangement au moment où tu veux afficher.

    Sorry donc.

  4. #4
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Points : 192
    Points
    192
    Par défaut
    Avec EMS SQL Manager http://sqlmanager.net/products/postgresql/manager/ il est possible de faire cela avec la fonction "reorder fields" mais à condition qu'aucune colonne de la table ne soit une clé étrangère d'une autre table...

    Donc obliger de faire un DROP CONSTRAINT, reorder puis ADD CONSTRAINT (c'est comme ça que je fais)

    A moins que qlq sache désativer les contraintes d'intégrité temporairement mais je ne sais pas si c'est possible...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Points : 46
    Points
    46
    Par défaut
    merci de vos reponses

    bon apparemment il y a pas de requetes sql pour changer l'ordre des colonnes

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 836
    Points
    836
    Par défaut
    bonjour, je ne sais pas si c'est recommandé ,mais en changeant les valeurs de attnum (champs qui donne l'ordre des colonnes dans la table) de la table pg_attribute on aurait un truc du style:
    pour une table t avec une premiere colonne a et une deuxieme b:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update pg_attribute set attnum=3 where attname='a';
    update pg_attribute set attnum=1 where attname='b';
    update pg_attribute set attnum=2 where attname='a';
    evidemment il ne faut pas de contraintes...

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 141
    Points : 134
    Points
    134
    Par défaut
    je sais que je réactualise un peu ce vieux sujet mais il y a cette possibilité pour changer l'ordre des colonnes
    1.Créez une nouvelle table avec les colonnes dans le nouvel ordre.
    2. exécuter cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             INSERT INTO new_table SELECT columnsinneworder FROM old_table;
    3.Effacez ou renommez la table old_table.
    4. Renommer la nouvelle table avec l'ancien nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE new_table RENAME old_table;
    tiré de http://dev.mysql.com/doc/refman/5.0/...umn-order.html

  8. #8
    En attente de confirmation mail
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Juin 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour, oui je réactualise ce post, puisque je suis toujours à la recherche d'un moyen pour réorganiser mes colonnes

    simplement avec la méthode que tu propose Agriesean, il serait bien possible de perdre les contraintes d'intégrités à moins qu'on est sûr que la clause insert into dupliquera ces dernières pour la table nouvellement rajoutée.

    Je suis preneur de toute méthode testée et fiable qui permet d'attiendre cet objectif

    merci d'avance

  9. #9
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Je soupçonne l’existence de dans tes codes. Ce qui pousse effectivement à connaitre un ordre établi des colonnes.
    Si tel est le cas, il faut éviter de tels pratiques. fait plus que ce qu'on a besoin et consomme des ressources pour rien.
    @+

Discussions similaires

  1. changer l'ordre des colonnes d'un fichier csv
    Par Christophe P. dans le forum Développement de jobs
    Réponses: 14
    Dernier message: 20/05/2015, 11h02
  2. Ordre des Colonnes d'une requête
    Par dlh1222 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 23h43
  3. Rajout colonne - changer l'ordre des colonnes ?
    Par Coptere dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/09/2005, 10h56
  4. [JTable] redimensionner et changer le titre des colonnes
    Par Ghost Dog dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 19/04/2005, 20h31
  5. changer l'ordre des dates dans table
    Par lordyan dans le forum Requêtes
    Réponses: 11
    Dernier message: 14/01/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo