Supposons que j'ai deux tables. articles et commentaires.sql - left join - count
quand je suis sélectionner des colonnes de la table d'articles, je veux également sélectionner le nombre de commentaires sur l'article de la même instruction select ... (supposons que le champ commun entre ces deux tables est articleid)
comment Est-ce que je fais ça? Je peux le faire, mais je ne sais pas si mon chemin serait efficace, alors je veux apprendre de la bonne façon.
Juste ajouter un groupe n'est pas toujours la meilleure chose à faire. Je vois des gens écrire des requêtes avec des centaines de colonnes (ok pas 100s mais beaucoup) dans leur clause group by parce qu'elles ne savent pas comment utiliser correctement les agrégats. C'est pourquoi j'ai posté une solution en utilisant une sous-requête. – JonH
@JonH: SQL Server (entre autres DB) similaire ne vous permettra pas de lister/retourner les colonnes qui ne sont pas enveloppées dans des fonctions agrégées (sauf si vous utilisez des fonctions analytiques) sans les définir dans la clause GROUP BY. Si vous omettez la clause 'GROUP BY', vous ** recevrez une erreur sur SQL Server en fonction de ce qui est fourni. MySQL est le seul DB qui supporte une telle fonctionnalité, et il est non-standard: http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html –
Je sais que mon point Beaucoup de gens ne comprennent pas comment fonctionnent les groupes et les agrégats. J'ai vu des gens grouper par 100s de colonnes juste pour obtenir ce qu'ils pensent être le bon résultat. – JonH