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 :

problème de jointures


Sujet :

Requêtes MySQL

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut problème de jointures
    salut,

    j'ai un problème de jointures(enfin je crois) dans une requête.

    Je voudrais calculer la moyenne des votes de produits.
    Il y a 3 tables :
    Product : idProduct,name,etc.
    ProductHasMark : idProduct,idUser,idMark
    Mark : idMark, value

    Ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT 
    p.idContent,p.name,AVG(m.value)
    FROM `Product` AS p
    LEFT JOIN `ProductHasMark` AS phm ON phm.idProduct = p.idProduct
    LEFT JOIN `Mark` AS m on m.idMark = phm.idMark
    Quand cette requête s'éxécute, je n'ai qu'une ligne retournée.

    Je pense que c'est un problème sur la dernière jointure, non ?
    J'avais peut-être pensé à la remplacer par un FULL , mais même en le remplaçant par le UNION, cela ne marche pas.

    Bref, si vous avez des idées.Merci!

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Non, c'est tout à fait normal qu'il n'y ait qu'une seule ligne. La fonction AVG est une fonction d'agrégation.
    Ce qu'il manque, en revanche, c'est la clause GROUP BY, qui doit reprendre toutes les colonnes du SELECT qui ne sont pas dans la fonction d'agrégation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT p.idContent,p.name,AVG(m.value)
    FROM `Product` AS p
    LEFT JOIN `ProductHasMark` AS phm ON phm.idProduct = p.idProduct
    LEFT JOIN `Mark` AS m ON m.idMark = phm.idMark
    GROUP BY p.idContent,p.name
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Je ne savais même pas ce qu'était une fonction d'agrégation,
    donc merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de jointure de tables
    Par AurelBUD dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2005, 16h27
  2. Probléme de jointure
    Par Ajrarn dans le forum Langage SQL
    Réponses: 14
    Dernier message: 24/02/2005, 14h57
  3. Vraisemblable problème de jointure
    Par pimousse76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 15h34
  4. [MS Access] Problème de jointure
    Par Erakis dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2005, 21h15
  5. Problème de jointure ?!
    Par ebaynaud dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/11/2004, 11h27

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