ahmed elbarbary

ahmed elbarbary

  • NA
  • 1.6k
  • 275k

count is wrong for author related book why and how to solve ?

Aug 22 2020 7:58 PM
I work on SQL server 2012 I face issue count is wrong for book s related to author
so why count for books related to author is wrong for author Ahmed
 
  1. create table #books  
  2. (  
  3. BookId int,  
  4. BookName nvarchar(200),  
  5. AuthorId  int  
  6. )  
  7. create table #booksUpdate  
  8. (  
  9. BookId int,  
  10. BookName nvarchar(200),  
  11. AuthorId  int  
  12. )  
  13. insert into #booksUpdate  
  14. values  
  15. (119,'matlab',1),  
  16. (120,'3dmax',1),  
  17. (121,'c',1)  
  18. create table #Authors  
  19. (  
  20. AuthorId int,  
  21. AuthorName nvarchar(200)  
  22. )  
  23. insert into #Authors  
  24. values  
  25. (1,'Ahmed'),  
  26. (2,'Mohamed'),  
  27. (3,'Eslam')  
  28. insert into #books  
  29. values  
  30. (122,'c#',1),  
  31. (233,'Java',1),  
  32. (555,'c++',1),  
  33. (666,'photoshop',2),  
  34. (777,'asp.net',2),  
  35. (888,'python',2)  
  36.   
  37. select a.authorName,count(b.BookName) as countBooks , count(bu.BookName) as countBooksUpdate,(count(bu.BookName) + count(b.BookName)) as Total from #Authors a   
  38. left join #books b on a.AuthorId=b.AuthorId  
  39. left join #booksUpdate bu on a.AuthorId=bu.AuthorId  
  40. group by a.authorName  
  1. authorName  countBooks  countBooksUpdate    Total  
  2. Ahmed   9   9   18  
  3. Eslam   0   0   0  
  4. Mohamed 3   0   3  
 
result is wrong for Author Name Ahmed
it must be
  1. authorName  countBooks  countBooksUpdate    Total  
  2. Ahmed   3   3   6  
so How to fix query to give correct result
 
  1. Expected result is  
  2.   
  3. authorName  countBooks  countBooksUpdate    Total  
  4. Ahmed   3   3   6  
  5. Eslam   0   0   0  
  6. Mohamed 3   0   3  
 
 

Answers (1)