Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 24/11/2010, 16h38   #1
Membre du Club
 
Inscription : mai 2008
Messages : 217
Détails du profil
Informations personnelles :
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : mai 2008
Messages : 217
Points : 40
Points : 40
Envoyer un message via MSN à miketidy
Par défaut Jointure externe ne fonctionnant pas (Je pense)

Bonjour,

J'essaye de faire une jointure externe entre deux tables mais çà ne semble pas fonctionner.

J'ai une table contenant des codes regroupement (au total 50 lignes)
ID | CODE | Libelle

Et une vue dans laquelle il y a le code regroupement ainsi que le libelle, j'ai essayé de faire la jointure avec le libelle comme ceci :

Code :
1
2
3
4
SELECT a.regt_libelle,c.libelle_regroupement FROM t_regrpt_spf a 
LEFT OUTER JOIN v_cons_tbb_regroup c 
         ON a.REGT_LIBELLE=c.LIBELLE_REGROUPEMENT                                          
WHERE c.CODE_PORTEFEUILLE='031' GROUP BY a.regt_libelle,c.libelle_regroupement
Seulement je n'ai pas le résultat attendu, je n'ai que ce qui est utilisé dans la vue comme libelle regroupement (au total 4 lignes), ce que je voudrai c'est avoir tous les libellés même si ces derniers ne sont pas utilisés.

Merci d'avance pour votre aide,
miketidy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 17h08   #2
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 878
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 878
Points : 7 643
Points : 7 643
Tu as mis une condition dans le where sur un champ de cette vue donc pour que la condition soit vérifier tu devra obligatoirement avoir un retour de la vue. Tu n'aura donc que les résultats de la jointure ou la vue renvoie aussi ses résultats (ça revient à implicitement transformer le Left Outer Join en Inner Join).

Pour avoir tous les résultats tu dois
- soit supprimer cette condition
- soit tenir compte dans cette condition que la vue en question peut ne pas renvoyer de résultat, et donc que le champ conditionné peut-être nul.
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 17h16   #3
Membre du Club
 
Inscription : mai 2008
Messages : 217
Détails du profil
Informations personnelles :
Localisation : France, Somme (Picardie)

Informations forums :
Inscription : mai 2008
Messages : 217
Points : 40
Points : 40
Envoyer un message via MSN à miketidy
D'accord ok j'ai perdu du temps pour rien la clause where était juste là pour avoir moins de résultat... En tout cas merci de ton aide
miketidy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 17h35   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 956
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 956
Points : 18 161
Points : 18 161
Envoyer un message via MSN à CinePhil
Plus précisément, quand tu as une condition de restriction qui porte sur la table de droite dans une jointure externe à gauche (ou sur la table de droite dans une jointure externe à droite), tu dois inclure cette restriction dans la condition de jointure :
Code :
1
2
3
4
5
SELECT les_colonnes_voulues
FROM une_table AS a
LEFT OUTER JOIN une_autre_table AS b 
  ON a.une_colonne = b.une_autre_colonne -- condition de jointure
  AND b.une_troisième_colonne = une_valeur -- condition de restriction sur la table b
__________________
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 actuellement 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 16h44.


 
 
 
 
Partenaires

Hébergement Web