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

SQL Oracle Discussion :

Sélectionner plusieurs fois la même ligne en fonction d'une colonne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut Sélectionner plusieurs fois la même ligne en fonction d'une colonne
    Bonjour à tous,

    Je cherche à insérer plusieurs fois la même ligne d'une table A vers une Table B en fonction d'une colonne:
    Table A ( NomTable varchar, NombreAction Int ) ; Table B ( NomTable )

    Par exemple si dans la table A on a une ligne avec: NomTable=Clients et NombreAction=5 (sachant que NombreAction varie en fonction de la ligne), j'aimerai que dans la table B on puisse avoir:

    Clients
    Clients
    Clients
    Clients
    Clients

    Voilà j'espère que c'est assez clair,
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Et si tu faisais une boucle en PL/SQL?

    Ta boucle va de 1 à NombreAction (récupéré via un SELECT) et dans la boucle tu fais un INSERT(nomTable) dans Table2.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut
    Salut Ikebukuro,
    J'suis tout nouveau sur Oracle, et j'ai essayé de bidouiller un peu en PLSQL que je connaissais pas avant la semaine dernière et malheureusement ça ne pardonne pas..
    Si tu peux éclairer ma lanterne sur la structure d'une boucle avec ces tables je t'en serai infiniment reconnaissant !

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 955
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 955
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     insert into table_b (NomTable)
     select NomTable
       from table_a
    connect by level <= NombreAction
        and NomTable = prior NomTable                 
        and prior sys_guid() IS NOT NULL ;
    Si NomTable est bien unique, sinon remplacer NomTable par la clé primaire de table_a dans AND NomTable = prior NomTable

  5. #5
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Houla, tu vas le noyer

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 955
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 955
    Par défaut
    Un peu de lecture sur le sujet :
    http://pacmann.over-blog.com/article...121532704.html
    https://community.oracle.com/thread/2526535

    Tout d'abord il faut évidemment savoir que CONNECT BY LEVEL est massivement utilisé sur oracle comme générateur de lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> select level
      from dual
    connect by level <= 5;  2    3
     
         LEVEL
    ----------
             1
             2
             3
             4
             5

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

Discussions similaires

  1. VBA - Dupliquer plusieurs fois la même ligne
    Par Max_Mer dans le forum Excel
    Réponses: 2
    Dernier message: 14/03/2016, 09h17
  2. Suppression de ligne en fonction d'une colonne
    Par PPLILH2008 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/06/2008, 10h43
  3. Supprimer lignes en fonction d'une colonne
    Par eillon dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/12/2007, 11h15
  4. [VB.NET] Appliquer plusieurs fois la même fonction...
    Par MiJack dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/09/2004, 10h52

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