MYSQL - Utilisation de la SOMME à JOINDRE
Ok, donc j'ai 4 tables.
Un users
table avec des colonnes id
et name
.
Un groups
table avec des colonnes id
, name
et owner
.
Un items
table avec des colonnes group
et content
.
Un content
table avec des colonnes id
, name
et duration
.
Chaque utilisateur peut disposer de plusieurs groupes. Chaque groupe peut avoir plusieurs éléments à l'intérieur d'elle. Chaque élément représente l'un des éléments de contenu.
Je veux être en mesure de faire la liste de tous les groupes, avec une somme de toutes les durées de chaque morceau de contenu à l'intérieur de ce groupe.
Ce que j'ai essayé est ce:
select groups.id,groups.name,users.name,sum(content.duration) as duration from groups
join users on groups.owner=users.id
join items on items.group=groups.id
join content on content.id=items.content
Malheureusement cela ne me donne un résultat, avec une somme totale de toutes les durées de chaque morceau de contenu dans tous les groupes comme:
"g001", "Group 1", "Me", "400"
Ce que je m'attends à quelque chose comme:
"g001", "Group 1", "Me", "160"
"g002", "Group 2", "You", "160"
"g003", "Group 3", "Them", "80"
OriginalL'auteur Jimmery | 2013-02-08
Vous devez vous connecter pour publier un commentaire.
essayer cette
vous bienvenue ! je voulais confirmer par de simples données si u m'a donné 🙂 pour afficher u sur sqlfiddle démo. bonne chance !
OriginalL'auteur echo_Me
Essayez ceci:
OriginalL'auteur Hamlet Hakobyan
LEFT JOIN
vous permet d'afficher tous les groupes, même sans contenu, mais la valeur totale de laduration
sera zéro.OriginalL'auteur John Woo