Коррелированный подзапрос может быть самым простым подходом:
select p.product_id,
(select i.url
from images i
where i.product_id = p.product_id
order by i.image_id
limit 1 offset 0
) as url1,
(select i.url
from images i
where i.product_id = p.product_id
order by i.image_id
limit 1 offset 1
) as url2,
(select i.url
from images i
where i.product_id = p.product_id
order by i.image_id
limit 1 offset 2
) as url3
from products p;
Предполагается, что у вас есть таблица с именем products
. Если нет, вы всегда можете использовать (select distinct product_id from images) p
.
Это также предполагает, что у вас есть столбец идентификатора изображения в images
. Если нет, вы можете использовать order by url
.
Если вы не хотите использовать таблицу products
, вы можете сделать:
select p.product_id,
(select i.url
from images i
where i.product_id = p.product_id
order by i.image_id
limit 1 offset 0
) as url1,
(select i.url
from images i
where i.product_id = p.product_id
order by i.image_id
limit 1 offset 1
) as url2,
(select i.url
from images i
where i.product_id = p.product_id
order by i.image_id
limit 1 offset 2
) as url3
from (select distinct product_id from images) p;