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 :

Doubles jointures externes....


Sujet :

Langage SQL

  1. #1
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut Doubles jointures externes....
    Pour faire simple....

    J'ai les tables suivantes:
    Site(id_site, id_village, id_type_site)
    Village(id_village, nom_village)
    Type_Site(id_type_site, nom_type_site)

    Actuellement j'arrive à afficher:

    nom_village | nb_sites
    V1 40
    V2 0 la jointure externe permet d'afficher le village même s'il n'a pas de site

    et

    nom_type_site | nb_sites
    T1 80
    T2 50
    T3 0 la jointure externe permet d'afficher le type de site même si ce type n'est pas utilisé

    Si je joins ces 2 sous-requêtes, je perds mes lignes avec les 0

    J'aimerais avoir le résultat suivant:

    nom_village | nom_type_site | nb_sites
    V1 T1 30
    V1 T2 10
    V1 T3 0
    V2 T1 0
    V2 T2 0
    V2 T3 0


    Merci d'avance....
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  2. #2
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 65
    Points
    65
    Par défaut Re: Doubles jointures externes....
    Si je comprends bien :
    Tu veux pour chaque couple potentiel ( Village / Type_site ) comptabiliser le nombre de Sites existant
    =>Il ne s'agit donc pas d'une double jointure externe, mais d'un produit cartesien entre Village et Type_site + jointure externe sur les sites de chaque couple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select
              A.nom_village , B.nom_type_site , count( c.id_site )
    from
               Village     A     ,
               Type_site B
            left join
               Site          C
            on
               C.id_village     = A.id_village and
               C.id_type_site = B.id_type_site
    group by
                A.nom_village , B.nom_type_site
    Si le SGBD fait des difficultés (c'est mon cas avec DB2) essai
    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
    select
              A.nom_village , A.nom_type_site , count( c.id_site )
    from
      ( select
                A.nom_village , B.nom_type_site , A.id_village , b.id_type_site
         from
               Village     A     ,
               Type_site B
       ) as A
            left join
               Site          C
            on
               C.id_village     = A.id_village and
               C.id_type_site = A.id_type_site
    group by
                A.nom_village , B.nom_type_site
    Peut etre des warning lorsque l'on tente de comptabiliser les NULL
    => remplacement de :
    count( c.id_site )
    Par :
    sum( case when C.id_site is NULL then 0 else 1 end )

  3. #3
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Merci c'est bien ce que je voulais
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

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

Discussions similaires

  1. Effectuer une "double" jointure externe
    Par sat83 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2013, 13h31
  2. Double jointure externe sur une table
    Par astridette dans le forum SQL
    Réponses: 2
    Dernier message: 30/03/2012, 13h33
  3. Double jointure externe
    Par fozzeuh dans le forum SQL
    Réponses: 4
    Dernier message: 28/10/2010, 14h09
  4. Double jointure externe
    Par Djakisback dans le forum Langage SQL
    Réponses: 10
    Dernier message: 01/02/2008, 16h45
  5. requete avec double jointure externe
    Par cdu dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/01/2006, 14h54

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