Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 15h39   #1
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mai 2011
Messages : 99
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 99
Points : 29
Points : 29
Par défaut Problème Jointure multiple

Bonjour Forum,

J'ai 3 tables, tbl_roadsheet, tbl_customers, tbl_municipality.

La table tbl_municipality sert à lister l'ensemble des municipalités de ma région et leur attribuer un ID. ON retrouve donc cette ID dans les deux autres tables. Mon problème c'est qu'il y a un ID différent pour le projet et le client, car un client à sa propre addresse et un projet également, car un client peut avoir plusieurs projets, et il est rarement à la même addresse que celle du projets. J'ai donc une addresse de livraison et une de facturation.

je me demandais comment monter ma requête SQL pour avoir les deux minucipalités. Normalement ma requête serait

Code :
1
2
3
4
SELECT r.contrat, c.name, m.name
             FROM tbl_roadsheet r
                  INNER JOIN tbl_Customer c ON r.custID = c.CustID
                  INNER JOIN tbl_Municipality m ON r.municipalityID = m.municipalityID
Je voudrais donc avoir également le nom de la municipalité lié à mon client

Merci!
Beaudelicius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 15h48   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Boujour,
Il suffit d'ajoute de nouveau la table tbl_Municipality dans la requête, mais avec un autre alias, et de faire une jointure avec tbl_Customer.

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 15h57   #3
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mai 2011
Messages : 99
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 99
Points : 29
Points : 29
Comme ça?

Code :
1
2
3
4
5
SELECT r.contrat, c.name, m.name AS CustMunicipality, m.name AS ProjMunicipality
             FROM tbl_roadsheet r
                  INNER JOIN tbl_Customer c ON r.custID = c.CustID
                       INNER JOIN tbl_municipality ON c.municipalityID = m.municipalityID
                  INNER JOIN tbl_Municipality m ON r.municipalityID = m.municipalityID
Mais comment SQL sait que le premier m.name est sur le client et l'autre sur le projet??

Merci!
Beaudelicius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 16h19   #4
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 099
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 099
Points : 1 922
Points : 1 922
Il ne sait pas, car dans ta requête, c'est le même !
C'est pour celà que j'ai précisé "avec un autre alias" !

Code SQL :
1
2
3
4
5
select t1.id,t2.id,t3.id
from table1 t1
inner join table2 t2 on t1.champ1 = t2.id
inner join table2 t3 on t1.champ2 = t3.id


Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 17h48   #5
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mai 2011
Messages : 99
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 99
Points : 29
Points : 29
Parfais merci!!
Beaudelicius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h14.


 
 
 
 
Partenaires

Hébergement Web