I made a working request, but the output data is duplicated. I think that it is necessary to add a GROUP BY book ID for this.
Code:
var result = from b in _context.Book
join oi in _context.OrderItem on b.Id equals oi.Fk_BookId
join o in _context.Order on oi.Fk_OrderId equals o.Id
join u in _context.Users on o.UserID equals u.Id
where EF.Functions.DateDiffYear(u.DateofBirth, DateTime.Now) >= 17 && EF.Functions.DateDiffYear(u.DateofBirth, DateTime.Now) <= 27
orderby b.Id
select new BookVM()
{
Id = b.Id,
Title = b.Title,
Pages = b.Pages
};
I made a similar request in mysql, and with group by everything works right.
SELECT book.Id, book.Title FROM book
JOIN orderitem ON book.Id = orderitem.Fk_BookId
JOIN webbookshop.order ON webbookshop.order.Id = orderitem.Fk_OrderId
JOIN aspnetusers ON aspnetusers.Id = webbookshop.order.UserId
WHERE TIMESTAMPDIFF(YEAR, aspnetusers.DateofBirth, CURDATE()) >=17 AND TIMESTAMPDIFF(YEAR, aspnetusers.DateofBirth, CURDATE()) <= 27 GROUP BY book.Id ORDER BY book.Id asc;
How can I add a GROUP BY here or something else that can remove duplicate data? Thank you.