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 :

Dupliquer lignes + traitements en aval


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Dupliquer lignes + traitements en aval
    Hello,

    Je souhaiterais passer d'un tel enregistrement :

    COL_1 COL_2 COL_3 COL_4 COL_5 COL_6
    700 20A 111 / =222 333 / =444 555 / =666 777 / =888
    300 50B a / =b c / =d e / =f g / =h

    A quelque chose comme ça :

    COL_1 COL_2 COL_3 COL_4 COL_5 COL_6 INDEXE
    "valeur par défaut à définir" 20A 222 444 666 888 1
    700 20A 111 333 555 777 1
    "valeur par défaut à définir" 50B b d f h 2
    300 50B a c e g 2

    Le tout sur n enregistrements.
    Je débute en SQL, merci pour votre aide précieuse

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Voilà un exemple typique de BDD mal modélisée, ici c'est une donnée non atomique.
    Et la conséquence est comme d'habitude des requêtes alambiquées pour s'en sortir

    Voici une solution possible, acceptable si vous n'avez que des 300 et des 700, nettement moins si vous avez beaucoup de valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    select 100 (valeur par défaut)
         , COL_2
         , substr(COL_3, 01, 03)
         , substr(COL_4, 01, 03)
         , substr(COL_5, 01, 03)
         , substr(COL_6, 01, 03)
         , 1
    from ma_table
    where  COL1 = 700
     
    UNION ALL
     
    select COL_1
         , COL_2
         , substr(COL_3, 08, 03)
         , substr(COL_4, 08, 03)
         , substr(COL_5, 08, 03)
         , substr(COL_6, 08, 03)
         , 1
    from ma_table
    Where COL1 = 700
     
    UNION ALL
     
    à  compléter à l'identique pour les 300, avec la valeur d'index 2
    Ici j'ai supposé que le "formatage" des colonnes 3 à 6 était constant, sinon il faut passer par une recherche de chaine de caractères en espérant que les séparateurs sont toujours les mêmes...

    Si vous avez plus de valeurs que 300 et 700 et qu'il peut y avoir plus que 2 valeurs par colonne (ex "555 / =666 / =777etc...), alors là c'est la cata...

    Dans tous les cas, vous avez gagné le droit d'aller tirer les oreilles à celui qui à conçu le modèle de données

    Bon courrage

  3. #3
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Ha bien vu le UNION ALL, je n'y avais pas pensé !

    Je test ça Lundi, et reviens éventuellement si j'ai d'autres soucis. Mais merci bien en tout cas

Discussions similaires

  1. [2008] Dupliquer lignes en fonction d'une valeur de champ
    Par Fredo67 dans le forum SSIS
    Réponses: 1
    Dernier message: 02/02/2015, 17h51
  2. Réponses: 2
    Dernier message: 26/01/2015, 12h07
  3. Comment dupliquer ligne suivant valeur Champ3
    Par toto92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/01/2013, 19h17
  4. Dupliquer ligne datagridview
    Par cazadeis dans le forum VB.NET
    Réponses: 4
    Dernier message: 23/09/2010, 10h10
  5. dupliquer ligne d'une table et mettre à jour
    Par shaftJackson dans le forum PL/SQL
    Réponses: 8
    Dernier message: 08/06/2009, 17h02

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