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

 Oracle Discussion :

Jointure de tables


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 265
    Par défaut Jointure de tables
    Bonjour,

    Voici mon problème :
    Je dois faire une requête où se trouvent des jointures externes entre des tables:
    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
    24
    25
    select cn,
    civilite,
    supannEmpid,
    supannetablissement,
    lc_supannetablissement,
    telephonenumber,
    autretelephonenumber,
    from 
    individu i,
    civilite c,
    personnels p,
    indiv_etablissement ie,
    supannetablissement e,
    indiv_tel it,
    telephone t,
    indiv_autretelephone iat,
    where
        i.id_civilite = c.id_civilite
    and i.id_individu= p.id_personnels
    and i.id_individu = ie.id_individu
    and ie.id_supannetablissement = e.id_supannetablissement(+)
    and i.id_individu = it.id_individu(+)
    and it.id_telephone = t.id_telephone(+)
    and i.id_individu   = iat.id_individu(+)
    and iat.id_telephone= t.id_telephone
    le problème c'est que ça ne marche pas. L'enregistrement peut ou pas exister dans ma table indiv_tel et peut ou pas exister dans la table indiv_autretelephone. Le résultat ne me sort rien alors que si ça n'existe pas j'aimerais avoir les champs telphonenumber et autretelephonenumber à null et avoir tout de même ma ligne d'enregistrement.

    Merci d'avance pour votre aide,
    NFHnv

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Visiblement, vous avez inversé les tables dans votre condition de jointure.

    Typiquement, cette requête mériterait d'être réécrite conformément à la norme SQL2, vous n'auriez pas eu ce problème...

    essayez ceci :
    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
    24
    25
    26
     
    SELECT cn,
    civilite,
    supannEmpid,
    supannetablissement,
    lc_supannetablissement,
    telephonenumber,
    autretelephonenumber,
    FROM 
    individu i,
    civilite c,
    personnels p,
    indiv_etablissement ie,
    supannetablissement e,
    indiv_tel it,
    telephone t,
    indiv_autretelephone iat,
    WHERE
        i.id_civilite = c.id_civilite
    AND i.id_individu= p.id_personnels
    AND i.id_individu = ie.id_individu
    AND ie.id_supannetablissement = e.id_supannetablissement(+)
    AND i.id_individu = it.id_individu(+)
    AND t.id_telephone = it.id_telephone(+)
    AND i.id_individu   = iat.id_individu(+)
    AND iat.id_telephone= t.id_telephone

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 2
    Par défaut
    Etant donné cette condition :
    Citation Envoyé par NFHnv Voir le message

    ... L'enregistrement peut ou pas exister dans ma table indiv_tel et peut ou pas exister dans la table indiv_autretelephone.
    ...
    Et en complément de la réponse de aieeeuuuuu ne faudrait-il pas ajouter un (+) comme suit :

    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
    24
    25
    SELECT cn,
    civilite,
    supannEmpid,
    supannetablissement,
    lc_supannetablissement,
    telephonenumber,
    autretelephonenumber,
    FROM 
    individu i,
    civilite c,
    personnels p,
    indiv_etablissement ie,
    supannetablissement e,
    indiv_tel it,
    telephone t,
    indiv_autretelephone iat,
    WHERE
        i.id_civilite = c.id_civilite
    AND i.id_individu= p.id_personnels
    AND i.id_individu = ie.id_individu
    AND ie.id_supannetablissement = e.id_supannetablissement(+)
    AND i.id_individu = it.id_individu(+)
    AND it.id_telephone = t.id_telephone(+)
    AND i.id_individu   = iat.id_individu(+)
    AND t.id_telephone =  iat.id_telephone (+)

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Par défaut
    Tu peux utiliser
    left join ou RIGHT JOIN :

    exemple*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from
    individu i left join telephone t on i.id=t.individu_ID
    cette requête permet de lister tous les individus.+ leur téléphone s'il sont stockés bien sur dans la table telephone

    dans notre exemple la table individu se trouve à gauche par rapport à la clause (left join)

Discussions similaires

  1. Jointure de table avec Interbase
    Par ada_b dans le forum InterBase
    Réponses: 21
    Dernier message: 12/05/2010, 20h52
  2. Réponses: 7
    Dernier message: 10/02/2005, 01h13
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 18h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 22h56
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 18h50

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