Table de blog:
| bid | btitle | likecnt | commentcnt | | 29 | ...... | 3 | 2 | | 38 | ...... | 2 | 1 |
3 Réponses :
Utilisez des jointures appropriées et comptez voir le Démo . des valeurs distinctes code> car plusieurs jointures augmentent le nombre de lignes retournées:
J'utilise gauche code> joint juste au cas où il n'y a pas de commentaire ni de goût pour un post.
Résultats: P> | bid | btitle | likecnt | commentcnt |
| --- | ------ | ------- | ---------- |
| 29 | ...... | 3 | 2 |
| 38 | ...... | 2 | 1 |
@Jainamdoshi est là une raison pour laquelle vous avez inaccepté la réponse?
@Forpas: Ceci est probablement causé par un commentaire que j'ai fabriqué sur la réponse de Gordon Linoff Expliquant que des produits cartés intermédiaires inutiles devraient être évités dans SQL. Bien que votre requête résout le problème de Jainam et explique également ce qu'il a mal fait, c'est toujours la pire approche des trois réponses à mon avis.
Vous pouvez faire si vous voulez uniquement correspondance rejoindre code> avec agrégation séparée: enchère code> S. interne Joindre code> au lieu de rejoindre gauche code> & Supprimer coalesce () code>. P> p> p>
Dans de nombreuses circonstances, les sous-couches corrélées peuvent être la solution la plus rapide:
select b.bid, b.btitle,
(select count(*) from likes l where l.bid = b.bid) as num_likes,
(select count(*) from comment c where c.bid = b.bid) as num_comments
from blog b;
@Jainamdoshi. . . Il y avait des caractères étrangers dans la requête. Cela devrait fonctionner maintenant.
@Jainam Doshi: S'il vous plaît ne dites jamais "ça ne marche pas" sans dire Qu'est-ce que i> ne fonctionne pas. Avez-vous eu des résultats erronés? Une erreur de syntaxe? Si une erreur, quel message exactement? (BTW: J'aime bien mieux les réponses de Gordon et de Yogesh Sharma, bien mieux que l'acceptée. Joindre des goûts et des commentaires non planifiés produisent un produit cartésien, c'est-à-dire que vous vous combinez chaque commentaire dans un blog inutilement, gonflant ainsi la quantité de données à gérer Dans la requête,)
@Thorstenkettner J'ai eu une erreur de requête: Erreur: ER_BAD_FIELD_ERROR: Colonne inconnue 'B.ID' dans 'Où clause'
@Jainam Doshi: Parce que le tableau blog code>, ici aliasé avec B code>, n'a pas de colonne ID code>; La colonne s'appelle offre code>. Donc, il suffit de remplacer b.id code> avec b.bid code> et la requête doit fonctionner. Il est surtout que vous n'aviez pas pu comprendre cela vous-même. Je pense que le message d'erreur est clair et la requête très simple.