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 :

Question sur code sql [9.1]


Sujet :

PostgreSQL

  1. #1
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut Question sur code sql
    Bonjour ,

    J'ai une table que j'ai simplifié ici avec notamment une clé serial et une colonne numero_uts

    Cette table contient des enregistrements avec notamment numero_uts qui vaut 5 6 7 9 10 11.

    Je voudrais dupliquer des lignes en mettant une autre valeur à numero_uts selon la correspondance suivante :
    5 6 7 9 10 11 dupliqués respectivement en 13 14 15 16 17 18

    Bien sûr je pourrais passer par une table de correspondance à 2 colonnes mais y a t il moyen de faire autrement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO data.matable ( numero_uts )
    SELECT autre_numero_uts
    FROM matable
    WHERE numero_uts in (5,6,7,9,10,11)
    --> quoi mettre dans autre_numero_uts ?

    Merci d'avance !

    ( table en pièce jointe )
    Fichiers attachés Fichiers attachés

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 055
    Par défaut
    Bonjour,

    En passant par un CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO matable ( numero_uts )
    SELECT CASE WHEN numero_uts BETWEEN 5 AND 7 THEN numero_uts + 8
                WHEN numero_uts BETWEEN 9 AND 11 THEN numero_uts + 7
           END AS numero_uts
    FROM matable
    WHERE numero_uts IN (5,6,7,9,10,11)
    Testez d'abord le SELECT tout seul avant d'ajouter l'INSERT
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    Merci , cela me convient tout à fait.

    J'ai supprimé les between pour bien afficher les correspondances
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INSERT INTO DATA.matable ( numero_uts )
    SELECT 
     CASE 
    	WHEN numero_uts = 5 THEN 13
    	WHEN numero_uts = 6 THEN 14
    	WHEN numero_uts = 7 THEN 15
    	WHEN numero_uts = 9 THEN 16
    	WHEN numero_uts = 10 THEN 17
    	WHEN numero_uts = 11 THEN 18
     END AS numero_uts
    FROM data.matable
    WHERE numero_uts IN (5,6,7,9,10,11) ;

  4. #4
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT	CASE numero_uts
    	WHEN 5 THEN 13
    	WHEN 6 THEN 14
    	WHEN 7 THEN 15
    	WHEN 9 THEN 16
    	WHEN 10 THEN 17
    	WHEN 11 THEN 18
    	END AS numero_uts
    FROM DATA.matable
    WHERE numero_uts IN (5,6,7,9,10,11) ;

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    ou encore (pour le fun car bien moins lisible ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT numero_uts + 8 - (numero_uts/8)
    FROM maTable
    WHERE numero_uts IN (5,6,7,9,10,11) ;

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

Discussions similaires

  1. question sur requete SQL
    Par thomason1407 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/09/2007, 00h29
  2. [SQL] Question sur requête SQL
    Par Cheeper dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2007, 17h56
  3. question sur Code::blocks
    Par deubelte dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 04/01/2007, 15h44
  4. À lire avant de poster vos questions sur Code::Blocks
    Par khayyam90 dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 12/07/2006, 08h23
  5. [Debutant] Question sur Cours SQL Pro
    Par etiennegaloup dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/10/2005, 09h50

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