А вот так не получается?:
SELECT N.id, N.name, CONCAT( "[", GROUP_CONCAT( CONCAT("{shop:'",CONVERT(S.name USING utf8),"',"), CONCAT("count:'", if(P.count > 0, CONVERT(P.count USING utf8), 0),"'}") ) ,"]" ) as data FROM `modx_products_nomenclature` N LEFT JOIN `modx_shops` S ON S.active = 1 LEFT JOIN `modx_warehouse_products` P ON P.product_id = N.id and S.warehouse_id = P.warehouse_id GROUP BY N.id