Вы можете добавить еще одно объединение, чтобы получить изображение. Например, изображение max
для каждого продукта:
SELECT f.PRODUCT_ID, f.DESC, x.MIN_PRICE, x.SUPPLIER_COUNT, img.Name
FROM (
select pp.PRODUCT_ID
, MIN(pp.PRICE) as MIN_PRICE
, COUNT(pp.PRODUCT_ID) as SUPPLIER_COUNT
from PRICE_BY_SUPPLIER as pp
group by
pp.PRODUCT_ID
) AS x
JOIN PRODUCT as f
on f.PRODUCT_ID = X.PRODUCT_ID
JOIN (
select max(name)
from images_by_product
group by
product_id
) as img
on img.PRODUCT_ID = X.PRODUCT_ID
Если изображение не является обязательным, замените join
на outer join
. В зависимости от вашей СУБД, вы также можете получить случайное изображение. Например, в SQL Server вы можете заменить объединение на cross apply
:
...
on f.PRODUCT_ID = X.PRODUCT_ID
CROSS APPLY
(
select top 1 name
from images_by_product
where PRODUCT_ID = X.PRODUCT_ID
order by
newid()
) as img
Или даже непосредственно в предложении select:
SELECT f.PRODUCT_ID, f.DESC, x.MIN_PRICE, x.SUPPLIER_COUNT, img.Name
, (
select top 1 name
from images_by_product
where PRODUCT_ID = X.PRODUCT_ID
order by
newid()
) as img
FROM (
select pp.PRODUCT_ID
...