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

Requêtes MySQL Discussion :

JOIN avec plusieurs Items dirigeant vers le même item ?


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut JOIN avec plusieurs Items dirigeant vers le même item ?
    Bonjour,

    Le sujet de mon message est peut-être imcompréhensible.... je vais essayer de faire plus simple dans mon explication

    Soit les tables clients et véhicules :

    Client
    - Num_cli
    - Nom
    - ...

    Vehicule
    - Num_veh
    - Proprietaire
    - Conducteur
    - Leasing
    - ...

    Les items Proprietaire, Conducteur, Leasing sont des numéros de clients qui sont dans la BD
    L'item propriétaire est bien sur obligatoire mais pas les 2 autres (mais il s'agit forcement d'un client de la table Client s'ils sont remplis)

    Vous me suivez ?

    Mon but : récupérer le 'Nom' du propriétaire... et les noms des Conducteur et leasing s'ils sont remplis
    Donc récupérer 3 'Nom' différents s'ils sont remplis tous les 3....

    La logique serait celle là....

    SELECT * (pour simplifier)
    FROM Vehicule
    INNER JOIN Client ON Client.num_cli = vehicule.proprietaire
    LEFT OUTER JOIN Client ON Client.num_cli = vehicule.conducteur
    LEFT OUTER JOIN Client ON Client.num_cli = vehicule.leasing
    WHERE Vehicule.num_veh

    Mais je ne vais jamais récupérer 3 fois le 'Nom' du fichier Client avec cela ?

    Une idée ?

    Merci d'avance

    Fred

  2. #2
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    slt Fred_76,
    dis moi qui sont considerés comme clients .les proprietaires ,conducteurs , leaszing?

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 355
    Points : 15 701
    Points
    15 701
    Par défaut Re: JOIN avec plusieurs Items dirigeant vers le même item ?
    Citation Envoyé par Fred_76
    SELECT * (pour simplifier)
    FROM Vehicule
    INNER JOIN Client ON Client.num_cli = vehicule.proprietaire
    LEFT OUTER JOIN Client ON Client.num_cli = vehicule.conducteur
    LEFT OUTER JOIN Client ON Client.num_cli = vehicule.leasing
    déjà tu ne peux pas utiliser 3 fois la table Client comme ça, tu dois leur donner des autres nom avec "AS"
    idem pour le nom des champs, tu dois utiliser AS et tu obtient quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT vehicule.proprietaire AS numProprietaire, vehicule.conducteur AS numConducteur, vehicule.leasing AS numLeasing
     FROM Vehicule
     INNER JOIN Client AS C1 ON C1.num_cli = vehicule.proprietaire
     LEFT OUTER JOIN Client AS C2 ON C2.num_cli = vehicule.conducteur
     LEFT OUTER JOIN Client AS C3 ON C3.num_cli = vehicule.leasing

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Re: JOIN avec plusieurs Items dirigeant vers le même item ?
    Un grand merci Mathieu.... c'est bien la subtilité qui m'échapait...

    Donc pour info, la solution est bien :

    SELECT vehicule.proprietaire AS numProprietaire, vehicule.conducteur AS numConducteur, vehicule.leasing AS numLeasing, C1.nom AS c1_nom, , C2.nom AS c2_nom, C3.nom AS c3_nom
    FROM Vehicule
    INNER JOIN Client AS C1 ON C1.num_cli = vehicule.proprietaire
    LEFT OUTER JOIN Client AS C2 ON C2.num_cli = vehicule.conducteur
    LEFT OUTER JOIN Client AS C3 ON C3.num_cli = vehicule.leasing

    Encore merci...ce problème est donc "résolu"

    Fred

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Résolu] Re: JOIN avec plusieurs Items ...
    Bonjour,

    je viens d'être confronté au même problème de plusieurs références poitant vers la même table ...

    Merci pour cette solution claire et évidente !!

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

Discussions similaires

  1. Référence de plusieurs clés étrangères vers la même table
    Par paulisgone dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 18/03/2015, 11h39
  2. [AC-2010] Double left join de deux table différentes vers une même table
    Par Nikimizi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/08/2014, 15h13
  3. Réponses: 8
    Dernier message: 10/07/2012, 19h57
  4. [EJB3.1] Plusieurs relation OneToOne vers la même entité.
    Par piemur2000 dans le forum Java EE
    Réponses: 1
    Dernier message: 11/01/2011, 09h05
  5. Left join avec plusieurs table & plusieurs champs
    Par jayfaze dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 16/12/2009, 15h01

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