Справка по SQL с запросом - функции группировки и агрегирования - PullRequest
0 голосов
/ 14 мая 2009

У меня есть запрос, с которым мне нужна помощь, я проверил довольно много учебных пособий, но я не нашел ничего, что касается этой проблемы.

У меня есть три объединенные таблицы: Products, ProductImagesLookUp и Images.

Продукт может иметь любое количество изображений, и порядок изображений для продукта сохраняется в ProductImagesLookUp.

Мне нужно вернуть список продуктов с их основным изображением (с наименьшим значением заказа).

Список выглядит так

Product
Images
LookUpId FileID Order    ProductTitle               Price   ProductId 
65       2     1    Amari Summer Party Dress    29.99      7
66       1     2    Amari Summer Party Dress    29.99      7
67       3     3    Amari Summer Party Dress    29.99      7
74       4     5    Beach Cover Up                  18.00     14
75       5     4    Beach Cover Up                  18.00     14
76       7     6    Beach Cover Up                  18.00     14
77       8     7    Beach Cover Up                  18.00     14
78       9     8    Beach Cover Up                  18.00     14
79       10    9    Amari Classic Party Dress   29.95     15
80       11    11   Amari Classic Party Dress   29.95     15
81       12    10   Amari Classic Party Dress   29.95     15

Я хочу, чтобы в моем запросе был отобран список различных товаров с наименьшим значением заказа. То есть он должен вытягивать строки обратно с ProductImagesLookUpId 65 (продукт 7), 74 (продукт 14) и 79 (продукт 15).

Заранее спасибо за вашу помощь. этот действительно заставил меня выдернуть волосы!

1 Ответ

1 голос
/ 14 мая 2009
SELECT
  l.LookupId,
  i.FileId,
  l.[Order],  
  p.ProductTitle,
  p.Price,
  p.ProductId 
FROM
  Products p
  INNER JOIN ProductImagesLookUp l ON l.ProductId = p.ProductId
  INNER JOIN Images i ON i.FileId = l.FileId
WHERE
  i.[Order] = (
    SELECT MIN([Order]) 
    FROM ProductImagesLookUp 
    WHERE ProductId = p.ProductId
  )

Нет необходимости группировать или агрегировать что-либо, так как подзапрос гарантирует, что для любого заданного * не более одной строки результатов ProductId & mdash; один с самым низким Order.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...