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 :

Fusion de 2 tables d'une même base


Sujet :

PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Fusion de 2 tables d'une même base
    Bonjour à tous,

    Voilà mon soucis :
    Je possède 2 tables de la même base : table_LR et table_RHA
    chacune de ses tables comprends le même nombre de colonnes mais nommés différement (sol_LR & sol_RHA, use_LR & use_RHA...)

    Je souhaiterais fusionner ces 2 bases en 1 seules de facon à avoir dans une même nouvelle colonne "sol" les valeurs de sol_LR et sol_RHA.

    J'ai tenter un LEFT JOIN et un RIGHT JOIN sans succès. Avez vous des idées pour le script ?

    merci à vous
    Bonne journée

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    est-ce que vous devez gérer des doublons entre les 2 tables ou non ?

    si pas de doublons .. deux possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    create table tb1 (id_1 integer);
    create table tb2 (id_2 integer);
     
    insert into tb1 values (1);
    insert into tb2 values (2);
    1ere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create table tb3 (id) as (
    select id_1
    from tb1
    union all
    select id_2 
    from tb2);
    2eme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create table tb3 (id integer);
     
    insert into tb3 
    select id_1
    from tb1
    union all
    select id_2 
    from tb2;

  3. #3
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Oui le cas des doublons doit se poser en premier et si c'est le cas, tu devras sans doute adapter les contraintes sur les colonnes (unique, primary key, etc) et créer une table tierce qui accueillera les données que tu souhaites fusionnées.
    Donc ensuite, crée cette nouvelle table et fais un "copy" ou "insert'" des lignes de tes 2 tables dans celle que tu viens de créer. (il doit bien y avoir des outils pour créer les scripts qui vont bien : genre un pg_dump des données de ces 2 tables que tu auras un peu adapté pour remplir la nouvelle table)

  4. #4
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    cf . punkoff
    ça c'est mieux ...

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse rapide
    N'étant pas familier de PostgreSQL depuis longtemps j'ai quelques petites questions concernant votre script:

    Tout d'abord je possède des colonnes ayant le même nom et parfois des valeurs identiques aux 2 bases.

    J'ai créer une table tierce pour avoir mes données à fusionner et j'ai tenter un insert mais la copie de la table s'est faite à la suite dans la même colonne.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Tout d'abord je possède des colonnes ayant le même nom et parfois des valeurs identiques aux 2 bases.
    Concernant les colonnes ayant le même nom je ne vois pas bien où est le problème ?

    Pour la gestion des doublons : http://sqlpro.developpez.com/cours/doublons/


    J'ai créer une table tierce pour avoir mes données à fusionner et j'ai tenter un insert mais la copie de la table s'est faite à la suite dans la même colonne.

    ok c'est cool, mais comment peut-on interpréter ca avec aucun exemple ?

    Au vu des doublons =>
    - déterminez quelles données vous allez garder
    - construisez une, ou plusieurs, requête d'insert pour insérer les données dans votre table temporaire.

    A ce stade si vous avez encore des problèmes revenez avec un exemple concret (descriptif des tables, requetes utilisées, jeu de donnée simplifié du problème)

  7. #7
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Au vu des doublons
    Dans ton précédent post tu mets en exemple un code avec une clause "UNION", ce qui facilite le problème de notre ami par rapport à écrire un script d'insert comme je l'avais dit également dans mon post précédent.
    Je croyais que la clause UNION éliminait les doublons naturellement (si j'en crois la doc) par contre "UNION ALL" garde tout.

    bref, un exemple serait le bienvenue pour apprécier les 2 solutions.
    Bonne soirée et sans doute à demain pour voir où on en est.

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,


    union enleve les doublons parfait.

    Maintenant si on considère une table avec 10 colonnes dont une colonne est la pk, la différence parfaite peut etre tres loin de la vérité de l'égalité.

    C'est pourquoi je recommande a l'utilisateur de déterminer en avance ces réel cause d'égalité fonctionnelle.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2015, 12h31
  2. Réponses: 2
    Dernier message: 21/05/2011, 13h30
  3. Réponses: 4
    Dernier message: 18/08/2008, 14h05
  4. Créer par code des relations entre tables d'une même base ?
    Par AndréPe dans le forum Modélisation
    Réponses: 2
    Dernier message: 21/11/2007, 18h27
  5. Fusion de deux requetes sur une même table
    Par jojosbiz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/06/2007, 09h18

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