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

Langage SQL Discussion :

Requete INNER JOIN


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Points : 240
    Points
    240
    Par défaut Requete INNER JOIN
    Bonjour à tous,

    Dans un contexte Blog, je créé des articles qui possèdent chacun leur propre commentaire. (dites moi si vous avez besoin de la structure des tables)

    Je souhaite donc récupérer le nb de commentaires pour les articles, je réalise la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT `articles`.`idArticle`, `articles`.`titre`, `articles`.`date`, `articles`.`description`, `articles`.`contenu`, COUNT(idCommentaire) AS `nbre_commentaire` 
    FROM `articles` 
    INNER JOIN `commentaire` ON idArticle=idArt 
    GROUP BY `idArticle`, `titre`, `date`, `description`, `contenu`
    Je récupère bien les articles qui possède des commentaires, et très logiquement je ne récupère pas les articles qui n'ont pas de commentaire.

    Il faut que je fasse un UNION en faisant un select sur les articles qui ne possedent pas de commentaires ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SELECT a.idArticle, a.titre, count( c.idCommentaire )
    FROM articles a, commentaire c
    WHERE a.idArticle = c.idArt
    GROUP BY a.idArticle, a.titre
     
    UNION
     
    SELECT a.idArticle, a.titre
    FROM articles a
    WHERE NOTEXISTS (
          SELECT 1
          FROM commentaire c
          WHERE a.idArticle = c.idArt
    )
    Indépendemment l'une de l'autre, cela fonctionnera. Mais on remarque très vite que le problème c'est que ma deuxième requete ne possède pas de count() donc je vais me faire jeter rapidement

    S'il y a d'autre possibilité, je suis preneur évidemment

    Merci pour votre aide!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Remplacer votre INNER JOIN par un LEFT JOIN dans votre première requête devrait suffire.

  3. #3
    Membre actif Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Points : 240
    Points
    240
    Par défaut
    lol sa marche
    Merci

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

Discussions similaires

  1. soucis avec des requetes "INNER JOIN" Imbriquées
    Par Moutonstar dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/11/2008, 12h12
  2. Requete INNER JOIN pb
    Par petchos dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/07/2007, 10h11
  3. problème requete inner join
    Par maysa dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/04/2007, 12h48
  4. [MySQL]simple requete INNER JOIN
    Par jpeg1st dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/12/2006, 14h04
  5. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09

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