Я изо всех сил пытаюсь выяснить, как выбрать только первые 4 записи из дочерней таблицы для записи в родительской таблице в отношении master-detail.
Пример таблиц:
Product ProductImage
--------- -------------------
Id | Name PKeyFld1 | PKeyFld2
--------- -------------------
1 | Apple 1 | 1
2 | Banana 1 | 2
3 | Cranberry 1 | 3
1 | 4
1 | 5
2 | 1
2 | 2
2 | 3
3 | 1
3 | 3
3 | 4
3 | 8
3 | 9
Первичный ключ для ProductImage является комбинацией двух отображаемых полей. Мне нужно получить первые 4 изображения для каждого продукта, упорядоченные по PKeyFld1, PKeyFld2
, что приведет к:
ProductImage
-------------------
PKeyFld1 | PKeyFld2
-------------------
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 2
2 | 3
3 | 1
3 | 3
3 | 4
3 | 8
Самое хорошее решение - это иметь только один запрос с 1 записью на каждый продукт, но я могу также иметь дело с двумя запросами; 1 для продуктов и 1 для изображений. В C# я могу получить их и добавить данные изображения в модель перед дальнейшей обработкой.
Может кто-нибудь помочь мне с запросом для productImages? Сложнее всего получить только 4 верхних изображения для каждого продукта, не ограничивая всю таблицу ProductImage
только 4 записями. Я делал это с Postgres в прошлом, но не могу найти, как это сделать на SQL сервере.