У меня есть две таблицы в базе данных: Product и ProductVersion , каждый продукт может иметь n ProductVersions. У ProductVersion есть следующие поля (идентификатор, имя, происхождение, дата, поставщик)
Я хочу запрос, в котором я получаю информацию о продукте и в той же регистрации регистрирую информацию о версии продукта с максимальной датой, что-то вроде этого:
select
p.ProductId, p.ProductName , max(pv.date), name of max(pv.date), origin of max(pv.date)
from Product p Join ProductVersion pv on p.ProductId = pv.ProductId
where userId = 'test_user'
group by p.Id
Я хочу создать представление для вызова из c#, я работаю с linq, но производительность в этом случае не очень хорошая, поэтому я пытаюсь получить представление с нужной мне информацией. Нечто подобное я хочу достичь с помощью запроса SQL.
var result =
_context.ProductVersion
.Where(x => x.UserId == userId)
.GroupBy(x => x.ProductId)
.Select(group => group.OrderByDescending(x => x.Date).FirstOrDefault())
.Include(x => x.Product)
.ToList();