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 :

[SQL] jointure externe


Sujet :

Langage SQL

  1. #1
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut [SQL] jointure externe
    Bonjour,

    Je suis novice dans le sql, j'ai besoin de votre aide,
    j'ai une table A et une table B, les deux avec un Num_Cli et num_Offre

    table A contient 1 num_offre qui n'existe pas dans table B
    table B contient 3 num_offre qui n'existe pas dans table A

    Comment faire pour avoir les 4 offres.

    Merci d'avance..

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT NUM_OFFRE
    FROM A
    UNION
    SELECT NUM_OFFRE
    FROM B
    Tu peux aussi faire un UNION ALL si tu ne veux pas dédoublonner le résultat.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Points : 113
    Points
    113
    Par défaut
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT A.NUM_CLI, A.NUM_OFFRE
    FROM A
    FULL OUTER JOIN B ON B.NUM_CLI = A.NUM_CLI
                      AND B.NUM_OFFRE = A.NUM_OFFRE

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    J'ai toujours que les offres de la tables A :

    SELECT A.NUM_OFFRE
    FROM A
    FULL OUTER JOIN B ON B.NUM_CLI = A.NCLI
    WHERE A.NCLI='56092131'.


  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    Je ne suis pa sur d'avoir compris mais en gros tu veux les num_offres qui ne sont que dans une de tes 2 tables?

    dans ce cas je dirais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select A.num_offre from A union B on A.num_offre <> B.num_offre
    union
    select B.num_offre from B union A on B.num_offre <> A.num_offre
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select num_offre from A where num_offre not in (select num_offre from B)
    union
    select num_offre from B where num_offre not in (select num_offre from A)

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT   A.NUM_OFFRE
    FROM  A
    FULL OUTER JOIN  B  ON B.NUM_CLI = A.NCLI AND  A.NCLI='56092131'.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Merci pour votre aide,

    la requete devenait trop complexe, avec dejà 1 jointure et une union entre 3 tables, j'ai preferé faire l'union de deux requtes sql en java. Je ne saios pas si c'est bien pour l'optimisation des requetes, mais..pour la lisibilité du code et de la requte c'est bien utile.

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

Discussions similaires

  1. sql jointure externe
    Par ekremyilmaz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/07/2009, 15h54
  2. SQL Jointures externes imbriquées
    Par lbar012001 dans le forum SQL
    Réponses: 2
    Dernier message: 10/10/2007, 16h02
  3. [SQL] jointure externe complète
    Par kirgan dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 13h07
  4. [SQL] Jointure externe dans "les 2 sens"
    Par Bounty Killer dans le forum Oracle
    Réponses: 3
    Dernier message: 04/05/2006, 10h56
  5. [SQL] jointure externe avec 3 tables, comment faire ....
    Par grumbok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 16h13

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