Perdu sur une requete SQL

Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

Perdu sur une requete SQL

Message par Zedoune »

Salut à tous

Je suis vraiment une quiche en SQL, je suis bloqué sur une requête là :(

J'ai 2 tables, une table "articles" et une table "comments".

articles {
id (clé primaire)
state (> 0 ça veut dire qu'il est publié)
texte
}

comments {
id (clé primaire)
art (id de l'article sur lequel le commentaire doit être laissé)
state (> 0 ça veut dire qu'il est publié)
}


Ce que j'aimerais, c'est faire UNE seule requête qui me renvoie ça :

Pour chaque article validé, je veux son texte et le nombre de commentaires validés concernant cet article.

J'y arrive pas :(
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

Perdu sur une requete SQL

Message par Zedoune »

Et voilà.

On fait une sous-requete qui compte le nombre de commentaires par article et qui sont publiés. On fait un LEFT JOIN, car si un article n'a pas de commentaire, on fait QUAND MÊME la jointure, ce qui permet de récupérer toutes les données.


[cpp]SELECT nom AS ':nom',
articles.date AS ':date',
articles.id AS ':id',
articles.texte AS ':txt',
count_comments AS ':commentaires'
FROM articles
LEFT JOIN (select article AS id_article,
count(id) AS count_comments
FROM comments
WHERE STATE > 0
GROUP BY article) ON id_article = articles.id
WHERE articles.STATE > 0;[/cpp]
Répondre