У меня есть база данных с двумя таблицами:
Customers (Id PK, LastName)
а также
Orders (Id PK, CustomerId FK, ProductName, Price, etc.)
Я хочу получить информацию о заказах только последнего клиента вместе с именем клиента.
Я использую .NET L2SQL, но думаю, что это вопрос SQL больше, чем вопрос LINQ, поэтому я публикую здесь запрос SQL, который я пытался:
SELECT [t0].[LastName], (
SELECT [t2].[ProductName]
FROM (
SELECT TOP (1) [t1].[ProductName]
FROM [Orders] AS [t1]
WHERE [t1].[CustomerId] = [t0].[Id]
ORDER BY [t1].[Id] DESC
) AS [t2]
) AS [ProductName], (
SELECT [t4].[Price]
FROM (
SELECT TOP (1) [t3].[Price]
FROM [Orders] AS [t3]
WHERE [t3].[CustomerId] = [t0].[Id]
ORDER BY [t3].[Id] DESC
) AS [t4]
) AS [Price]
FROM [Customers] AS [t0]
Проблема в том, что в Orders больше столбцов (30), и с каждым столбцом запрос увеличивается и медленнее, потому что мне нужно добавить следующие подзапросы.
Есть ли лучший способ?