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

Développement SQL Server Discussion :

Problème avec jointures multiples.


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Problème avec jointures multiples.
    Bonjour!

    J'ai une petite difficulté technique à résoudre. Je suis dans une entreprise de transport, donc je manipule des données relatives à des cueillettes de marchandise, des données sur nos véhicules, des destinations, etc. Je vous donne ci dessous un petit schéma des tables et champs en question. Je possède une table Cueillettes_Entete qui contient toutes les données relatives à des cueillettes de marchandises, et en premier lieu, je souhaite obtenir des renseignements sur les camions qui doivent livrer le matériel. Par conséquent, je me sers d'un numéro de cueillette maitre qui est la clé entre la table Cueillette_Entete et VehiculesRapid. Jusque là, aucun problème, et ma requête renvoi 5 enregistrements, ce qui est bon. Là où les choses se corsent, je dois par la suite aller chercher le nom de la ville ainsi que de la province pour la destination de la cueillette. J'ai une table Villes avec les noms complets des villes dont j'ai besoin. Dans la table Cueillettes, j'ai 2 champs: LivraisonCodeDeVille et LivraisonEtatProvince que l'ont retrouve également dans la table Villes. Il est clair que 2 jointures doivent être faites afin de n'obtenir que les enregistrements dont la ville et la province concordent. Je fais donc ma premiere jointure avec le code de la ville et là j'ai toujours mes 5 enregistrements bien complets. Je fais ensuite ma deuxième jointure avec la province et PAF, 6500 enregistrements sont retournés! Voici ma requête, pouvez-vous me dire ce qui cloche et comment je dois procéder pour mes 2 jointures dans une même table? Merci!



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Select VR.NumeroVehicule, CE.NumeroDeCueillette, CE.PayeurNomDuPayeurReel,
    CE.ExpeditionAdresse4, CE.LivraisonDateHeurePrevue, CE.UsagerQuiAEntre, CE.DspNumeroDeVoyage,
    CE.DspLongueurTotaleOccupee, CE.ExpeditionDatePrevue, CE.TotalFacture, VR.NumeroDeMct,CE.LivraisonAdresse4,
    CE.LivraisonCodeDeVille, CE.LivraisonEtatProvince, V.NomDeLaVille, V.EtatProvince
    From cisadmin.Cueillettes_Entete CE
    Inner join cisadmin.vehiculesRapid VR On CE.DspNumeroDeCueilletteMaitre = VR.NumeroDeCueilletteMaitre
    inner join cisadmin.Villes V On CE.livraisonCodeDeVille = V.CodeDeVille
    inner join cisadmin.Villes V2 On CE.livraisonEtatProvince = V2.EtatProvince
    Where CE.NumeroDeCueillette = CE.DspNumeroDeCueilletteMaitre
    And CE.SensDuVoyage_Aller_Retour_Deux = 'A'
    And VR.GenreDuVehicule = 'T'
    Images attachées Images attachées  

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez utiliser plusieurs conditions dans le même prédicat de jointure.
    Dans votre requête vous avec effectué une jointure de plus, ce qui explique le cardinal de l'ensemble de données qui vous est retourné :

    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
    Select VR.NumeroVehicule,
    		CE.NumeroDeCueillette,
    		CE.PayeurNomDuPayeurReel,
    		CE.ExpeditionAdresse4,
    		CE.LivraisonDateHeurePrevue,
    		CE.UsagerQuiAEntre,
    		CE.DspNumeroDeVoyage,
    		CE.DspLongueurTotaleOccupee,
    		CE.ExpeditionDatePrevue,
    		CE.TotalFacture,	
    		VR.NumeroDeMct,
    		CE.LivraisonAdresse4,
    		CE.LivraisonCodeDeVille,
    		CE.LivraisonEtatProvince,
    		V.NomDeLaVille,
    		V.EtatProvince
    FROM cisadmin.Cueillettes_Entete AS CE
    INNER JOIN cisadmin.vehiculesRapid AS VR ON CE.DspNumeroDeCueilletteMaitre = VR.NumeroDeCueilletteMaitre
    INNER JOIN cisadmin.Villes AS V
    	ON CE.livraisonCodeDeVille = V.CodeDeVille
    	AND CE.livraisonEtatProvince = V.EtatProvince
    WHERE CE.NumeroDeCueillette = CE.DspNumeroDeCueilletteMaitre
    AND CE.SensDuVoyage_Aller_Retour_Deux = 'A'
    AND VR.GenreDuVehicule = 'T'
    Néanmoins je pense qu'il y a une petite erreur dans votre modèle de données, puisqu'une ville ne peut appartenir qu'à une seule province :
    la colonne LivraisonEtatProvince de la table CUEILLETTES ne devrait pas exister ...

    @++

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Merci! Ça fontionne Et bien il n'y a pas d'erreur dans le modèle puisqu'il existe des villes avec le même nom, dans d'autre provinces (Acton, que l'on retrouve dans les provinces ON, MA, ainsi que IN) Donc la combinaison de ces données est nécessaire.

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    il n'y a pas d'erreur dans le modèle puisqu'il existe des villes avec le même nom, dans d'autre provinces (Acton, que l'on retrouve dans les provinces ON, MA, ainsi que IN) Donc la combinaison de ces données est nécessaire.
    Merci pour le tuyau

    @++

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

Discussions similaires

  1. Problème requête avec jointures multiples
    Par babouu dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/12/2011, 17h16
  2. [SQL]Problème avec jointure de tables
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 29/03/2007, 20h43
  3. Problème avec jointure
    Par chips_84 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/06/2006, 15h37
  4. problème requête à jointure multiple...
    Par Ricardo_Tubbs dans le forum Access
    Réponses: 6
    Dernier message: 09/02/2006, 16h45
  5. Réponses: 22
    Dernier message: 05/07/2005, 00h04

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