У меня следующий Access 2002 запрос, который я выполняю через OLE DB в .NET:
SELECT TOP 25
tblClient.ClientCode,
tblRegion.Region
FROM (tblClient LEFT OUTER JOIN
tblRegion ON tblClient.RegionCode = tblRegion.RegionCode)
ORDER BY tblRegion.Region
В tblClient
имеется 431 запись, для которой RegionCode
имеет значение NULL
.
По какой-то причине вышеприведенный запрос возвращает все эти 431 запись вместо первых 25.
Если я изменю запрос на ORDER BY tblClient.Client
(имя клиента) примерно так:
SELECT TOP 25
tblClient.ClientCode,
tblRegion.Region
FROM (tblClient LEFT OUTER JOIN
tblRegion ON tblClient.RegionCode = tblRegion.RegionCode)
ORDER BY tblClient.Client
Я получаю ожидаемый набор результатов из 25 записей, показывающий смесь названий регионов и значений NULL
.
Почему упорядочение по полю, полученному с помощью LEFT OUTER JOIN
, не будет работать с предложением TOP
?
РЕДАКТИРОВАТЬ: Возможное решение
Когда я также ORDER BY tblClient.Client
запрос работает:
SELECT TOP 25
tblClient.ClientCode,
tblRegion.Region
FROM (tblClient LEFT OUTER JOIN
tblRegion ON tblClient.RegionCode = tblRegion.RegionCode)
ORDER BY tblRegion.Region, tblClient.Client
Так как я не против, если я сортирую по второму полю, сейчас я сделаю это.