Rejoindre plusieurs tables, sélectionner des comptages de différentes tables et grouper par une colonne dans une requête
J'ai besoin de joindre plusieurs tables, sélectionnez compte de différentes tables et de groupe par une colonne dans une requête. C'est comment je pourrais le faire séparément:
select c.CommunityName, SUM(case when m.ListKey = c.ListKey then 1 else 0 end) as Posts
from Community c with(NOLOCK)
join messages_ m with(NOLOCK)
on c.ListKey = m.ListKey
group by c.CommunityName
select c.CommunityName, SUM(case when b.CommunityKey = c.CommunityKey then 1 else 0 end) as Blogs
from Community c with(NOLOCK)
join Blog b with(NOLOCK)
on c.CommunityKey = b.CommunityKey
group by c.CommunityName
select c.CommunityName, SUM(case when ce.CommunityKey = c.CommunityKey then 1 else 0 end) as Events
from Community c with(NOLOCK)
join CalendarEvent ce with(NOLOCK)
on c.CommunityKey = ce.CommunityKey
where ce.StartDateTime >= GETDATE()
group by c.CommunityName
ou tout simplement
select c.CommunityName, COUNT(*)
from Community c with(NOLOCK)
join messages_ m with(NOLOCK)
on c.ListKey = m.ListKey
group by c.CommunityName
select c.CommunityName, COUNT(*)
from Community c with(NOLOCK)
join Blog b with(NOLOCK)
on c.CommunityKey = b.CommunityKey
group by c.CommunityName
select c.CommunityName, COUNT(*)
from Community c with(NOLOCK)
join CalendarEvent ce with(NOLOCK)
on c.CommunityKey = ce.CommunityKey
where ce.StartDateTime >= GETDATE()
group by c.CommunityName
Il y a plus de tables, certains qui nécessitent des jointures supplémentaires... quelqu'un Peut s'il vous plaît aider?
source d'informationauteur HLkatie
Vous devez vous connecter pour publier un commentaire.
Si je comprends votre question correctement, vous êtes à la recherche pour le nom de communauté avec les comtes tels que les messages, les blogs, événement, etc..
Que vos requêtes de compter individuellement, ajouter des colonnes factices dans le
SELECT
pour les autres chefs d'accusation, puis à la finUNION
et d'obtenir de laSUM
.CountsTable
ressembleraAinsi, vous pouvez
GROUP BY
nom et additionner les chiffres pour obtenir votre résultatAvez-vous pensé à utiliser
LEFT JOIN
pour connecter vos tables? Ensuite, vous pouvez vérifier pour les valeurs Null et additionner les valeurs non NULL.