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
- create table #books
- (
- BookId int,
- BookName nvarchar(200),
- AuthorId int
- )
- create table #booksUpdate
- (
- BookId int,
- BookName nvarchar(200),
- AuthorId int
- )
- insert into #booksUpdate
- values
- (119,'matlab',1),
- (120,'3dmax',1),
- (121,'c',1)
- create table #Authors
- (
- AuthorId int,
- AuthorName nvarchar(200)
- )
- insert into #Authors
- values
- (1,'Ahmed'),
- (2,'Mohamed'),
- (3,'Eslam')
- insert into #books
- values
- (122,'c#',1),
- (233,'Java',1),
- (555,'c++',1),
- (666,'photoshop',2),
- (777,'asp.net',2),
- (888,'python',2)
-
- select a.authorName,count(b.BookName) as countBooks , count(bu.BookName) as countBooksUpdate,(count(bu.BookName) + count(b.BookName)) as Total from #Authors a
- left join #books b on a.AuthorId=b.AuthorId
- left join #booksUpdate bu on a.AuthorId=bu.AuthorId
- group by a.authorName
- authorName countBooks countBooksUpdate Total
- Ahmed 9 9 18
- Eslam 0 0 0
- Mohamed 3 0 3
result is wrong for Author Name Ahmed
it must be
- authorName countBooks countBooksUpdate Total
- Ahmed 3 3 6
so How to fix query to give correct result
- Expected result is
-
- authorName countBooks countBooksUpdate Total
- Ahmed 3 3 6
- Eslam 0 0 0
- Mohamed 3 0 3