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 :

[Requete] Jointure de table


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 27
    Par défaut [Requete] Jointure de table
    Bonjour,
    Ayant 2 tables se présentant comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    table_1
    **************
    clé     val_1
    0        10
    1        56
    3        65
    5        32
    6        58
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    table_2
    **************
    clé     val_2
    1        35
    2        57
    4        4
    6        51
    Les clé des tables 1 et 2 sont identiques.
    Est-il possible d'en obtenir une troisieme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    table_3
    **********************
    clé     val_1    val_2
    0        10       NULL
    1        56       35
    2        NULL     57
    3        65       NULL
    4        NULL     4
    5        32       NULL 
    6        58       51
    D'avance merci,
    Cordialement.

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    Bonjour
    J'ai une petite question quelle est la condition de jointure ?
    est ce table1.clé = table2.clé?
    bonne journée

  3. #3
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 27
    Par défaut
    Citation Envoyé par fatati Voir le message
    Bonjour
    J'ai une petite question quelle est la condition de jointure ?
    est ce table1.clé = table2.clé?
    bonne journée
    Non car j'aimerais retrouver l'integralité des clés (de 0 à 6) bien qu'elles ne soient pas toutes présentes dans les deux tables.

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Par défaut ça te va ça ?
    ou tu as vraiment besoin d'écrire "NULL" dans les champs ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create table table_3 as (select * from table_1); 
     
    alter table table_3 add  val_2 number;
     
    insert into table_3 (cle, val_2) (select cle, val_2 from table_2);

    Bon courage

    Betty

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est pas d'une jointure externe dont on parle ?

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Jointure externe double
    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
    WITH t1 AS (
    			SELECT 0 AS cle, 10 AS val1 FROM dual
    UNION ALL SELECT 1, 56 FROM dual
    UNION ALL SELECT 3, 65 FROM dual
    UNION ALL SELECT 5, 32 FROM dual
    UNION ALL SELECT 6, 58 FROM dual),
    	t2 AS (
    			SELECT 1 AS cle, 35 AS val2 FROM dual
    UNION ALL SELECT 2, 57 FROM dual
    UNION ALL SELECT 4, 4 FROM dual
    UNION ALL SELECT 6, 51 FROM dual)
    SELECT NVL(t1.cle, t2.cle) AS cle, t1.val1, t2.val2
    FROM t1 FULL OUTER JOIN t2 ON t1.cle = t2.cle
    ORDER BY 1
     
    CLE	VAL1	VAL2
    0	10	
    1	56	35
    2		57
    3	65	
    4		4
    5	32	
    6	58	51

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Plus rapide dans ce cas précis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT cle, MAX(val1), MAX(val2)
    FROM (
    	SELECT t1.cle, t1.val1, NULL val2
    	FROM t1
    	UNION ALL
    	SELECT t2.cle, NULL, t2.val2
    	FROM t2)
    GROUP BY cle

  8. #8
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    D'ailleurs, j'ai pas l'impression que le FULL OUTER JOIN soit super optimisé chez oracle. La différence entre les 2 requêtes précédentes est flagrante

  9. #9
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bah FULL OUTER JOIN = produit cartésien alors forcément c'est pas performant

  10. #10
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 27
    Par défaut
    Merci beaucoup pour vos réponses.
    Ça marche parfaitement.

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

Discussions similaires

  1. requete jointure entre table de deux bases différentes
    Par sevy1881 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/06/2015, 17h36
  2. Requete jointure de 2 tables
    Par mickey45 dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/12/2006, 12h48
  3. Requete SQL jointure plusieurs tables
    Par bibicha dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/08/2006, 17h38
  4. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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