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 08/02/2011, 18h45   #1
Invité régulier
 
Inscription : mars 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 31
Points : 6
Points : 6
Par défaut Jointures comportant des tables étrangères

Bonsoir,

Je n'ai pas de code exemple, c'est plutôt une question conceptuelle, je vais essayer d'être clair.
Je fais des jointures sur 3 ou 4 tables, peu importe le nombre. toutes en INNER JOIN.
Jusque là tout est simple et clair.
Mon problème est que une des tables est une table de relation (table étrangère) et comporte donc des doublons de la clé utilisée pour la jointure.
Il en résulte (et c'est normal d'un point de vue SQL) que je ramène plus d'enregistrement que prévu. Ce que je souhaiterai faire en fait c'est utiliser un DISTINCT uniquement sur cette table étrangère.
Je me demande donc : y a-t-il un moyen de contournement facile.
Toutes mes solutions me paraissent un peu de la bricole pour un cas qui doit être relativement courant.

Qu'en pensez-vous ?

Michel
MICHEL_R est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 19h07   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
C'est dommage que vous n'ayez pas de code exemple car justement vous verriez que ce que vous demandez est une "fausse demande".

Soit DISTINCT fait l'affaire, soit c'est une autre demande.
Illustrez, j'y reviendrai.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 19h28   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par MICHEL_R Voir le message
Je fais des jointures sur 3 ou 4 tables, peu importe le nombre. toutes en INNER JOIN.
Jusque là tout est simple et clair.
Mon problème est que une des tables est une table de relation (table étrangère)
Si c'est bien ce que je pense, je préfère employé l'expression "table associative" puisqu'elle est issue d'une association du MCD.
Citation:
et comporte donc des doublons de la clé utilisée pour la jointure.
Non ! La clé (primaire) d'une table associative est composée des identifiants des tables participant à l'association.
Exemple...
MCD :
Personne -0,n----Travailler----0,n- Projet

Tables :
Personne (prs_id, prs_nom, prs_prenom...)
Projet (prj_id, prj_nom...)
Travailler (trv_id_projet, trv_id_personne...)

Citation:
Il en résulte (et c'est normal d'un point de vue SQL) que je ramène plus d'enregistrement que prévu.
Ca dépend de ce que tu demandes !

Citation:
Ce que je souhaiterai faire en fait c'est utiliser un DISTINCT uniquement sur cette table étrangère.
Sur mon exemple ci-dessus, quelles sont toutes les personnes qui travaillent sur des projets ?
Code :
1
2
SELECT DISTINCT trv_id_personne
FROM Travailler
Citation:
Je me demande donc : y a-t-il un moyen de contournement facile.
Toutes mes solutions me paraissent un peu de la bricole pour un cas qui doit être relativement courant.
Expose nous ton besoin concret, la description des tables et la ou les requêtes que tu as essayées.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h03.


 
 
 
 
Partenaires

Hébergement Web