В MSSQL у меня есть две таблицы с отношением один ко многим.
Таблицы:
tb_Products:
ID
ProductName
tb_Images:
ProductID
MidPath
В хранимой процедуре показывает продукты с их изображениями (также показывает нулевые записи), Иесли в tb_Images есть несколько productID, он показывает одну запись.
Я могу сделать эту работу с помощью этого запроса:
declare @rowIndexToFetch int
set @rowIndexToFetch=0
select p.ID,p.ProductName,p.CategoryID,c.ParentId,
pi.MidPath
from tb_Products p
join tb_Categories c
on p.CategoryID=c.ID
left outer join tb_Images pi
on pi.ProductID=p.ID
where c.ID=3 or c.ParentId=3
order by pi.ID desc
offset @rowIndexToFetch rows
fetch next 1 rows only
Но, если я использую смещение и выборку, я больше не будуможет получить NULL-записи из tb_Images.Левое внешнее объединение больше не работает.
Пример записи записей возвращается без извлечения смещения:
ID ProductName CategoryID ParentId MidPath
154 Chef Ceket 33 3 /cdn/www.sample.com/x
154 Chef Ceket 33 3 /cdn/www.sample.com/y
154 Chef Ceket 33 3 /cdn/www.sample.com/z
1 Eldiven 3 3 NULL
с извлечением смещения:
ID ProductName CategoryID ParentId MidPath
154 Chef Ceket 33 3 /cdn/www.sample.com/x
ожидается возвращение:
ID ProductName CategoryID ParentId MidPath
154 Chef Ceket 33 3 /cdn/www.sample.com/x
1 Eldiven 3 3 NULL
Проблема в том, что я не могу получить нулевые записи, когда использую инструкцию offset-fetch.Как я могу это исправить?