Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Get rows from primary table, and also a count of how many times that record appears in a secondary table (including 0's)

I have a Dogs table, a Kennels table and Visits table that contains DogId and KennelId columns.

I am trying to get a full list of all the dogs, with a column showing the number of visits to a particular kennel, so many of the results will contain a 0 as the visit count.

This is what I’ve tried:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

select dog.*, visits.visitCount FROM 
(select * from Dogs) as dog, 
(select COUNT (Visits.Id) as visitCount from Visits INNER JOIN Dogs ON Dogs.Id = 
Visits.DogId where KennelId = 'E15A8C60-E0FE-472D-9CC4-08DA251A992F') as visits

With this statement, I end up with all of the dogs, but with the same visit count for all, which is incorrect. I assume my count function is simply executed once with the result repeated for the remaining rows. I do not know how to correct this. Any help will be much appreciated!

>Solution :

With no table schemas or sample data, a guess would be something like the following:

select d.*, Coalesce(v.VisitCount,0) VisitCount
from dogs d
left join (
  select DogId, Count(*) VisitCount
  from visits v
  where v.KennedId = 'E15A8C60-E0FE-472D-9CC4-08DA251A992F'
  group by DogId
)v on v.DogId = d.DogId;
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading