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 :

Copie de données d'une table vers une autre avec incrémentation et foreign key


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut Copie de données d'une table vers une autre avec incrémentation et foreign key
    Bonjour,

    comme le titre l'indique je voudrais copier les données d'une table de travail sur une autre table. Mon soucis est le schémas des tables :

    colonnes de la table de travail : position, states, average1, average2, nom, saison
    colonnes de la table destinataire : id_table(avec une sequence qui l'incremente), position, avergae1, aveage2, id_nom, id_season.

    Bien entendu dans la table de travail il y a une centaine de lignes à transférer. Comment puis-je faire? pour le moment mes scripts me renvoient l'erreur : plus de 1 enregistrement... effectivement.

    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Sans connaitre la requête exécutée ni la structure des tables, trouver une réponse relève de la voyance...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    ce que je peux ajouter pour la structure c'est que sur la table detinataire les colonnes id_players et id_season sont des foreign keys : on récupère le nom dans la table de travail pour trouver son id dans une table payer, idem pour l'id_season.

    j'avais fait un script bête et mechant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    insert all into table destinaire 
    values (sqtable.nextval, 
    (select position from table de travail), 
    (select average1 from table de travail), 
    (select average2 from table de travail), 
    (select id_player from player where name = (select nom from table travail)),
     (select id_season from season where year = (select saison from table travail)));

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Il faut faire un INSERT INTO SELECT, et utiliser des requêtes corrélées pour récupérer les id_nom, id_season :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    insert into table destinaire (id_table, position, avergae1, aveage2, id_nom, id_season)
    select sqtable.nextval
         , t.position
         , t.average1
         , t.average2 
         , (select p.id_player from player p where p.name = t.nom) as id_player
         , (select s.id_season from season s where s.year = t.saison) as id_season
      from table de travail t;

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 956
    Par défaut
    Bonjour
    Citation Envoyé par hatlag Voir le message
    j'avais fait un script bête et mechant :

    insert all into table destinaire
    values (sqtable.nextval,
    (select position from table de travail),
    (select average1 from table de travail),
    (select average2 from table de travail),
    (select id_player from player where name = (select nom from table travail)),
    (select id_season from season where year = (select saison from table travail)));
    Effectivement tel quel ça risque de planter sur la table "travail" comporte plus d'une ligne.
    A ma connaissance il n'y a que PostgreSQL à accepter un vecteur multivalué dans la clause SELECT.

    Je vous propose d'utiliser la syntaxe Insert ... select ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    insert into destinataire (col1, col2, ...)
    Select sqtable.nextval, position, average1, ...
    From travail 
       inner join player on player.name= travail.nom
       inner join season on season.year=travail.saison
    where ...

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    merci pour vos réponses! je teste ça et vous dis.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    ça a parfaitement fonctionné. Merci !

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

Discussions similaires

  1. [XL-2010] Extraire les données depuis un classeur vers un autre avec une boucle
    Par Pamsu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/03/2019, 12h03
  2. Réponses: 5
    Dernier message: 18/07/2014, 14h36
  3. Copie de données d'un onglet vers un autre
    Par smael51 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/09/2010, 08h21
  4. copie des données d'un champ vers un autre
    Par cvlpj dans le forum IHM
    Réponses: 10
    Dernier message: 26/12/2006, 22h15
  5. Réponses: 1
    Dernier message: 26/12/2006, 16h23

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