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

Langage SQL Discussion :

Ajout de colonnes avec valeur


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 67
    Points : 46
    Points
    46
    Par défaut Ajout de colonnes avec valeur
    Bonjour,

    Je galère pour trouver comment je peux faire.
    Voilà, j'ai une table (disons TABLE) avec des valeurs et je veux ajouter deux colonnes COL_ID qui doit être incrémentée de 1 à chaque ligne et COL_NEW qui doit avoir pour valeur 'Y'.

    En gros, j'ai au départ :

    COL_1 COL_2
    A ; 12/01/2010
    A ; 29/03/2012
    B ; 04/01/2012

    Et je veux obtenir :

    COL_ID COL_1 COL_2 COL_NEW
    1 ; A ; 12/01/2010 ; Y
    2 ; A ; 29/03/2012 ; Y
    3 ; B ; 04/01/2012 ; Y

    Je ne sais pas si c'est possible de faire ça en une seule requête...

    Je n'arrive pas à voir comment je peux faire. (l'incrémentation me pose le plus de problème)

    Si vous avez une idée, merci beaucoup !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 242
    Points : 12 874
    Points
    12 874
    Par défaut
    Bonjour,
    Si la table possède déjà une clé primaire (disons ici le couple COL_1/COL_2), je vous bien un truc du genre:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    insert into LaTable(COL_ID,COL_1,COL_2,COL_NEW)
    select rowno,col_1,col_2,'Y' from latable
    update duplicates

    Tatayo.

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    SGBD????

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Le plus simple est peut être de mettre vos données dans une nouvelle table (Table_2), vous la créez avec la meme structure que "Table" puis vous faites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO Table_2
    SELECT * FROM Table
    Puis vous supprimez Table et la recréez avec votre champs auto-incrémenté (col_id) et votre autre nouvelle colonne (col_new)
    Ensuite vous faites un insert du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Table (col_1, col_2, col_new)
    SELECT col_1, col_2, 'Y'
    FROM Table_2
    Puis, bien sur, vous pouvez virer votre Table_2.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    Merci pour ces premières réponses.
    J'étais aussi partie sur l'idée de passer par une table temporaire.

    Mais comment je fais pour incrémenter ma colonne COL_ID ? (la créer, je n'ai pas eu de problème, mais elle est vide)
    On m'a parlé de passer par un script, mais je suis un peu larguée. :/

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Vous l'avez crée comment ?
    Une colonne auto-incrémentée on n'y touche pas, elle s'auto-incrémente seule ...

  7. #7
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    C'est bon, j'ai trouvé. Je suis passée par une séquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE sequence counter
    increment BY 1
    maxvalue 999999999999
    minvalue 1
    nocache;
    Puis je l'ai utilisée pour créer ma table temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE Table_temp (
        COL_ID,
        COL_1,
        COL_2,
        COL_NEW)
    AS (SELECT counter.nextval,
            COL_1,
            COL_2,
            'Y'
        FROM Table)
    Puis je supprime ma première table et renomme la temporaire.

    Je ne sais pas si c'est très propre, mais ça a le mérite de marcher.

    Merci beaucoup pour avoir pris un peu de votre temps pour m'aider.

    Par contre, il est possible de créer une colonne auto-incrémentée ?

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Oui c'est possible, la syntaxe varie selon le SGBD.

  9. #9
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    Oracle, c'est un SGBD ?
    C'est quoi la syntaxe avec celui-là pour ma culture ?

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Dans le cas d'Oracle il faut bien passer par une séquence comme vous l'avez fait.
    Les champs auto-incrémentés n'existent pas autrement ...

  11. #11
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    Merci pour cette réponse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Ajouts colonnes avec valeurs fixes et variables
    Par ericmlj78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/01/2014, 11h39
  2. Réponses: 2
    Dernier message: 19/04/2011, 17h15
  3. Ajouter une colonne avec proc sql
    Par green_fr dans le forum SAS Base
    Réponses: 3
    Dernier message: 08/07/2008, 10h13
  4. Supprimer une colonne avec valeurs par défaut
    Par SlashOwnsU dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/09/2006, 10h10

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