Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2008, 10h39   #1
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
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
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 14h26   #2
Membre du Club
 
Inscription : avril 2008
Messages : 89
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 89
Points : 58
Points : 58
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,
VASAPANCH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 14h36   #3
Membre du Club
 
Inscription : avril 2008
Messages : 89
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 89
Points : 58
Points : 58
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.
VASAPANCH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 15h59   #4
Membre du Club
 
Inscription : janvier 2008
Messages : 121
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 121
Points : 46
Points : 46
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...
genamiga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 12h52   #5
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
merci de vos reponses

bon apparemment il y a pas de requetes sql pour changer l'ordre des colonnes
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2008, 09h10   #6
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
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 :
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...
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 10h56   #7
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 122
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 122
Points : 88
Points : 88
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 :
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 :
1
2
 
ALTER TABLE new_table RENAME old_table;
tiré de http://dev.mysql.com/doc/refman/5.0/...umn-order.html
Agriesean est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h54.


 
 
 
 
Partenaires

Hébergement Web