Page 1 sur 1
Suppression de toute les colonnes dans une table
Posté : 18 mars 2009, 17:10
par GYo
Bonjour,
1) Je voudrais savoir comment supprimer toute les colonnes d'une table.
j'ai essayer "ALTER TABLE Nom_de_la_table DROP * " mais cela ne fonctionne pas.
Je précise que je ne souhaite pas rentrer le nom de la colonne a supprimer
2) Je voudrais savoir autrement comment supprimer toute les colonnes d'une table sauf d'une seule dont on connait le nom (ou garder la première colonne de la table et supprimer le reste)
merci d'avance pour vos réponses
Posté : 18 mars 2009, 17:14
par Kemper
Bizarre, ce n'est pas trop le genre d'opération qu'on cherche à automatiser généralement.
Est-ce que supprimer toutes les colonnes d'une table ne revient pas finalement à supprimer la table elle-même ?
Posté : 18 mars 2009, 18:29
par furiouslol
vide une table de tous ses enregistrements
supprime complètement la table
Quand a supprimer les colonnes d'un table sauf une, je vois pas l'intérêt et cela peut se révéler impossible ...
Es tu sûr de parler de colonnes et si oui, peut tu expliquer un peu plus ?

[/quote]
Posté : 18 mars 2009, 22:51
par iclo
Bizarre, ce n'est pas trop le genre d'opération qu'on cherche à automatiser généralement.
Est-ce que supprimer toutes les colonnes d'une table ne revient pas finalement à supprimer la table elle-même ?
Oui, on peut en effet se demander si tu n'aurais pas un petit problème de design. si tu veux des conseils n'hésites pas à nous donner quelques détails.
Posté : 19 mars 2009, 10:27
par GYo
Merci à vous tous d'avoir répondu,
Donc en fait dans ma table il n'y a qu'une seul colonne que je ne change jamais de nom, par contre les autres peuvent changer.
En gros ma table a comme nom de colonne "activité" qui reste tout le temps et les colonnes qui suivent sont le nom des zone géographique qui peuvent changer. En effet j'ai une page ou je rajoute ou je supprime des zone, et au moment ou je les enregistre (dans une autre table) je voudrais récupèrer le nom des zones et ainsi modifier ma table Petite précision aussi, tout les champs rentrer dans activité ne change pas.
Je souhaite donc pouvoir garder la colonne activité et supprimer le reste sans avoir à rentrer leur nom en "dur" dans la requête
note1: Effectivement Kemper ce que tu dis est juste je l'ai testé hier
Posté : 19 mars 2009, 10:31
par furiouslol
Peut tu nous donner la structure de tes tables ?
Posté : 19 mars 2009, 11:19
par GYo
Qu'appelle tu structure de la table?
La table ou je rentre mes zones ressemble à cela :
département/ Zone/ activité/ sous zone
drome /ZoneA /X /z1
drome /ZoneA /X /z3
drome /ZoneV /X /z4
var /ZoneB /Y /za
var /ZoneB /Y /zu
var /ZoneF /Y /zj
var /ZoneF /Y /zk
ect...
la table que je modifie ressemble alors à cela:
activité/ ZoneA/ ZoneV/ ZoneB/ ZoneF
X /32 /45 /76 /1
Y /43 /34 /4 /54
ect...
Posté : 19 mars 2009, 11:48
par Aureusms
Je pense que le plus simple est de créer une autre table... Tu aurais une table de travail et une table de stockage.
Posté : 19 mars 2009, 11:58
par GYo
Je ne comprend pas. Pour moi la table de stockage comme tu dis c'est la première et ma table de travail c'est la deuxième sauf que ma deuxième table évolue en fonction des zone de la première.
Posté : 19 mars 2009, 12:45
par Aureusms
Tiens ta structure me rappelle un cout que j'avais fais sur les transport par zone...
Bon sinon avec un structure comme ceci (que j'avais pas bien lu désolé : donc tu oublies ce que j'ai dis précédemment), je stockerai l'ID de la table 2 dans la table 1 :
table 1
département/ Zone/ id activité/ sous zone
drome /ZoneA /1 /z1
drome /ZoneA /1 /z3
drome /ZoneV /1 /z4
var /ZoneB /2 /za
var /ZoneB /2 /zu
var /ZoneF /2 /zj
var /ZoneF /2/zk
table 2
ID/activité/ ZoneA/ ZoneV/ ZoneB/ ZoneF
1/X /32 /45 /76 /1
2/Y /43 /34 /4 /54
Ainsi les deux tables seront indépendantes (mais c'est peut être ce que tu faisais avec ton X et Y)
Posté : 19 mars 2009, 14:04
par GYo
Je ne cherche pas a avoir 2 tables indépendantes. Ce que je cherche à faire c'est prendre le nom des zones de la table 1 et les mettre en nom de colonne de la table 2
exemple:
Quand je rajoute une ligne dans la table 1:
savoie / ZoneD / X1 / zl
Cela me donne dans la table 2 les colonnes :
activité/ ZoneA/ ZoneV/ ZoneB/ ZoneF/ ZoneD
(la colonne activité est la seule à rester tout le temps, le reste des colonnes peuvent changer)
Si je supprime dans la table 1 toute les ZoneA, cela me supprime le nom de colonne ZoneA dans la table 2
les autres champ n'ont pas d'importance
Posté : 19 mars 2009, 15:58
par furiouslol
Moi ça me parait totalement surréaliste de vouloir modifier la structure d'une base de donnée a la volée ... M'enfin c'que j'en dis hein ... Je suis la discutions au cas ou

Posté : 19 mars 2009, 18:08
par GYo
J’y suis finalement arrivé. Bien que cela soit assez lourd je n’ai pas trouvé d’autres solutions.
Petit rappel de ce que je voulais faire :
- a) Ne Garder dans ma table 2, que la colonne activité avec ce qu’il y a de rentré dedans.
- b) Remplacer le reste des colonnes en fonction des zones de la table 1
J’ai donc fait dans l’ordre :
- Je supprime la table 2 (toutes les colonnes disparaissent)
- Je crée une nouvelle table du même nom (table2) avec ma colonne qui ne change jamais (« activité ») (donc à ce stade la table 2 n’est composée que d’une seule colonne)
- Je lance ma fonction qui va lister le type d’activité de la table 1
- Je rentre les résultats dans la colonne activité de la table 2 (j’ai réalisé le petit a) )
(J’espère que vous suivez toujours ^^)
- Je lance ma fonction qui va lister les zones de la table 1
- J’ajoute ces zones en tant que colonne dans la table 2
Et voila au final si dans ma table 1 on rajoute ou on supprime des zones ou des activités, ma table 2 sera à jour au niveau de sa structure avec la colonne activité qui ne change jamais et le reste des colonnes qui ont été modifié. De plus, je n'ai pas eu à écrire "en dur" le nom de chaque zone et de chaque activité lors de la création/insertion/suppression/modification des tables.
merci à tous d'avoir participé à ce post, si vous voulez plus de précision sur ce que j'ai fait et à quoi sa servait vous pouvez m'envoyer un mp.
Posté : 20 mars 2009, 00:06
par iclo
Tant mieux si ça fonctionne.
Mais oui, je rejoins l'avis des autres: on ne modifie jamais la structure d'une base de donnée à la volée. Les données contenues dans les tables évoluent aux grés des insert/update/delete mais jamais les structures.
On se retrouve très vite dans une impasse pour implémenter une opération supplémentaire: par exemple une recherche. Tu devrais alors vérifier chaque colonne une à une ? très lourd. C'est pas pour critiqué ta solution, tant mieux si ça fonctionne mais soit vigilent, souvent un mauvais design ne pose problème que bien plus tard: une fois que la db est en production et qu'on ne peut plus rien y changer...
Posté : 20 mars 2009, 11:15
par GYo
Là est la difficulté de ce que je dois réalisé pour mon client, il veut que tout soit modulable (zone activité...), mon application au final se rapproche d'un système expert. Cette demande de modularité est compliqué à mettre en oeuvre du coup cela devient vite très lourd à moins de connaitre d'autre solutions. Cela implique de ne rien écrire en "dur" lors des requêtes. En plus pour l'instant je n'ai pas pu testé sur les machines du boulot donc je sais pas si cela va marcher.