Вообще как вариант просто взять себе облачный серв

Вообще как вариант просто взять себе облачный сервер и настроить на нем мускул под свои нужды, включая увеличение длины строки для concat-функций.

Но можно просто в цикле для всех магазинов наджоинить таблицу с формированием полей по маске, чтобы на выходе обработать полученные данные и набить в конечный запрос.

А можно и вовсе составить запрос так, чтобы на каждый продукт получилось N-число записей, в каждой из которых будет ID магазина, кол-во и т.п. Типа так:

select 
product_id, shop_id, count(*) as total
from products p
inner join shop_products sp on sp.product_id = p.id
inner join shops s on sp.shop_id = s
group by product_id, shop_id

И полученные данные уже обрабатываете в цикле, набивая конечный массив, так же как у нас TV-шки набиваются.