En essayant de sélectionner une table avec plusieurs jointures, une pour le nombre de commentaires utilisant COUNT et une pour sélectionner la valeur de vote total en utilisant SUM, le problème est que les deux jointures s'influencent mutuellement, au lieu de démontrant:mysql: problème de jointure multiple
3 votes 2 commentaires
Je reçois 3 * 2 = 6 votes et 2 * 3 commentaires
Ceci est la requête que je utilise:
SELECT t.*, COUNT(c.id) as comments, COALESCE(SUM(v.vote), 0) as votes
FROM (topics t)
LEFT JOIN comments c ON c.topic_id = t.id
LEFT JOIN votes v ON v.topic_id = t.id
WHERE t.id = 9
Cela ne se traduira-t-il pas par plus de chargement et plus de travail pour la base de données ou est-il plus difficile pour la base de données de travailler avec plusieurs jointures puis de les séparer? – Dennis
La plupart des bases de données possèdent une mise en cache interne pour les pages de données et d'index, ce qui ne pose donc pas de problème. De plus, le travail nécessaire pour compenser le produit cartésien peut être pire. En partie cela dépend de votre système spécifique et de vos données, donc la réponse la plus précise nécessite un test dans * votre * environnement. –