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 :

[Mysql5] Problème requête jointures externe


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 145
    Points : 69
    Points
    69
    Par défaut [Mysql5] Problème requête jointures externe
    Bonjour,

    je rencontre un problème pour construire ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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'

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 145
    Points : 69
    Points
    69
    Par défaut
    Bonjour,


    Merci beaucoup pourvotre solution.

    Bon week-end.

Discussions similaires

  1. Réponses: 24
    Dernier message: 24/07/2007, 17h48
  2. Réponses: 11
    Dernier message: 16/12/2006, 15h34
  3. problème requête à jointure multiple...
    Par Ricardo_Tubbs dans le forum Access
    Réponses: 6
    Dernier message: 09/02/2006, 16h45
  4. [Débutant]Soucis requête jointure externes (8-i)
    Par jdotti dans le forum Oracle
    Réponses: 7
    Dernier message: 14/10/2005, 15h39
  5. Problème requête jointure
    Par Isa31 dans le forum Langage SQL
    Réponses: 36
    Dernier message: 16/05/2005, 13h46

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