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 17/12/2011, 11h04   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 143
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 143
Points : 35
Points : 35
Par défaut [Mysql5] Problème requête jointures externe

Bonjour,

je rencontre un problème pour construire ma requête :
Code :
1
2
3
4
5
6
7
8
9
10
SELECT t1.valeur AS TITREARTICLE, t2.valeur AS CATEGORIEARTICLE 
FROM article a 
	INNER JOIN traduction t1 ON t1.id = a.IdArticle 
	LEFT OUTER JOIN langue lg ON t1.langue = lg.id_langue
	LEFT OUTER JOIN traduction t2 ON t2.id=a.IdCategoriearticle AND t2.langue = lg.id_langue 
WHERE lg.desccourte_langue = 'eng' 
AND t1.TABLE = 'article' 
AND t1.champ = 'TitreArticle' 
AND t2.TABLE = 'article_categorie' 
AND t2.champ = 'LibelleArticlecategorie'
Pour résumer dans ma base de données, j'ai obligatoirement t1.id = a.IdArticle mais ilse peut que je n'ai pas d'enregistrements repondant à la jointure t2.id=a.IdCategoriearticle (en gros un article peut ou non avoir une catégorie).

Comment pourrais-je corriger ma requête pour renvoyer tous les articles avec une catégorie ou non ?


Merci beaucoup.
sterix92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 12h59   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

Du fait de votre syntaxe vous avez transformez vos jointures externes en jointure internes.

Donc avec la syntaxe suivante ca marchera comme vous le souhaitez :

Code :
1
2
3
4
5
6
7
8
 
SELECT t1.valeur AS TITREARTICLE, t2.valeur AS CATEGORIEARTICLE 
FROM article a 
	INNER JOIN traduction t1 ON t1.id = a.IdArticle  
	LEFT OUTER JOIN langue lg ON t1.langue = lg.id_langue AND lg.desccourte_langue = 'eng' 
	LEFT OUTER JOIN traduction t2 ON t2.id=a.IdCategoriearticle AND t2.langue = lg.id_langue AND t2.TABLE = 'article_categorie' AND t2.champ = 'LibelleArticlecategorie'
WHERE t1.TABLE = 'article' 
AND t1.champ = 'TitreArticle'
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 14h03   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 143
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 143
Points : 35
Points : 35
Bonjour,


Merci beaucoup pourvotre solution.

Bon week-end.
sterix92 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 02h00.


 
 
 
 
Partenaires

Hébergement Web