Page 1 sur 1

Une erreur de jointure que je ne comprend pas

Posté : 14 déc. 2017, 03:22
par rononedex
Bonsoir,

Je viens de construire mon objet qui affiche mes articles en page d'accueil via un foreach :

Code : Tout sélectionner

public function HomeWorks(){ $limited = $this->Limited(); return $this->Cnx()->Prepare(" SELECT works.id, works.name, works.writer, works.content, works.posted, works.date, works.slug, users.email, users.username, users.avatar, comments.post_id, COUNT(comments.post_id) AS nbcoms, images.name AS imgname FROM works LEFT JOIN users ON users.username = works.writer LEFT JOIN comments ON comments.post_id = works.id LEFT JOIN images ON images.id = works.image_id WHERE works.posted = ? GROUP BY works.id ORDER BY works.date ASC LIMIT $limited ",[1]); }
Alors ça fonctionne bien ça fait bien ce que je veut, sauf que j'ai ajouter un système de like/dislikes alors je souhaite mettre en order by en fonction des likes/dislikes

Alors je fais comme ceci :

Code : Tout sélectionner

SELECT works.id, works.name, works.writer, works.content, works.posted, works.date, works.slug, users.email, users.username, users.avatar, COUNT(comments.post_id) AS nbcoms, images.name AS imgname, COUNT(likes.id_article) AS orderlike, COUNT(dislikes.id_article) AS orderdislike FROM works LEFT JOIN users ON users.username = works.writer LEFT JOIN comments ON comments.post_id = works.id LEFT JOIN images ON images.id = works.image_id LEFT JOIN likes ON likes.id_article = works.id LEFT JOIN dislikes ON dislikes.id_article = works.id WHERE works.posted = ? GROUP BY works.id ORDER BY orderlike ASC, orderdislike DESC LIMIT $limited
Les likes/dislikes sont liée par l'id_article a l'id de l'article et donc je veut qu'il compte le nombre de likes total de l'article et mette en premier les article les mieux noter et inversement pour les dislikes.

Sauf qu'il ne me retourne pas un nombre logique

j'ai deux likes sur l'article 1 et il me compte 4 etc...

je ne comprend pas ? ça fonctionne pour les commentaires j'ai bien le retour total par articles quand je fais un order by dessus les articles qui en on le plus sont bien en premier.

J'ai fais une erreur ? je ne vois vraiment pas.

Une aide serai la bienvenue Merci :)

Re: Une erreur de jointure que je ne comprend pas

Posté : 21 déc. 2017, 20:50
par kevin254kl
Bonjour,
Peux tu nous fournir le .sql des tables afin que nous puissions tester?

Re: Une erreur de jointure que je ne comprend pas

Posté : 22 déc. 2017, 08:48
par Spols
Pour avoir plusieurs count dans une même requète, il te faudra des sous-requète pour compter séparement. mais sans ta structure difficile de t'aider