Última Query:
SELECT
'https://template2-2.anyshop.com.br/' AS dominio,
'805' AS id_loja,
'sql_produtos_categorias' AS funcao,
TGRUPO.titulo as titulo_grupo,
TGRUPO.id as id_grupo,
TCATEGORIA.titulo as titulo_categoria,
TCATEGORIA.id as id_categoria,
TSUBCATEGORIA.titulo as titulo_subcategoria,
TSUBCATEGORIA.id as id_subcategoria,
IF(GROUP_CONCAT(TGRUPO.id) IS NOT NULL,
CONCAT('[', GROUP_CONCAT(
DISTINCT JSON_OBJECT(
'id', TGRUPO.id,
'desconto', TGRUPO.desconto,
'valor_minimo_desconto', TGRUPO.valor_minimo_desconto,
'promocao_data_inicio', TGRUPO.promocao_data_inicio,
'promocao_data_encerramento', TGRUPO.promocao_data_encerramento,
'titulo', TGRUPO.titulo
)
), ']'),
NULL
) AS grupo,
IF(GROUP_CONCAT(TCATEGORIA.id) IS NOT NULL,
CONCAT('[', GROUP_CONCAT(
DISTINCT JSON_OBJECT(
'id', TCATEGORIA.id,
'id_categoria', TCATEGORIA.id,
'id_grupo', TCATEGORIA.id_produto_grupo,
'desconto', TCATEGORIA.desconto,
'valor_minimo_desconto', TCATEGORIA.valor_minimo_desconto,
'promocao_data_inicio', TCATEGORIA.promocao_data_inicio,
'promocao_data_encerramento', TCATEGORIA.promocao_data_encerramento,
'titulo', TCATEGORIA.titulo,
'titulo_categoria', TCATEGORIA.titulo
)
), ']'),
NULL
) AS categoria,
IF(GROUP_CONCAT(TSUBCATEGORIA.id) IS NOT NULL,
CONCAT('[', GROUP_CONCAT(
DISTINCT JSON_OBJECT(
'id', TSUBCATEGORIA.id,
'id_subcategoria', TSUBCATEGORIA.id,
'id_grupo', TSUBCATEGORIA.id_produto_grupo,
'id_categoria', TSUBCATEGORIA.id_produto_categoria,
'desconto', TSUBCATEGORIA.desconto,
'valor_minimo_desconto', TSUBCATEGORIA.valor_minimo_desconto,
'promocao_data_inicio', TSUBCATEGORIA.promocao_data_inicio,
'promocao_data_encerramento', TSUBCATEGORIA.promocao_data_encerramento,
'titulo', TSUBCATEGORIA.titulo,
'titulo_subcategoria', TSUBCATEGORIA.titulo
)
), ']'),
NULL
) AS subcategoria
,
VTP.id as tipo_produto_id,
VTP.preco as tipo_produto_preco,
VTP.estoque as tipo_produto_estoque,
VTP.frete_dimensoes as tipo_produto_frete_dimensoes,
VTP.desconto as tipo_produto_desconto,
VTP.tipo as tipo_produto_tipo,
VTP.quantidade_sessao as tipo_produto_quantidade_sessao,
VTP.titulo as titulo_produto_tipo,
VTP.titulo as tipo_produto_titulo,
TPP.tipo_produto
,
IF(TPP.qtde_multipla_pf > 0, TPP.qtde_multipla_pf, 1) AS qtde_multipla_pf,
IF(TPP.qtde_multipla_pj > 0, TPP.qtde_multipla_pj, 1) AS qtde_multipla_pj,
IF(TPP.qtde_minimo_pf > 0, TPP.qtde_minimo_pf, 1) AS qtde_minimo_pf,
IF(TPP.qtde_minimo_pj > 0, TPP.qtde_minimo_pj, 1) AS qtde_minimo_pj
,
UMKT_2.email as marketplace_email,
UMKT_2.marketplace_telefone,
UMKT_2.marketplace_rg_ie,
UMKT_2.marketplace_cpf_cnpj,
UMKT_2.marketplace_id_cidade_nome,
UMKT_2.marketplace_id_estado_nome,
UMKT_2.marketplace_bairro,
UMKT_2.marketplace_numero,
UMKT_2.marketplace_endereco,
UMKT_2.marketplace_cep,
UMKT_2.marketplace_nome,
UMKT_2.loja_imagem_logo_marketplaces,
UMKT_2.loja_imagem_icone_marketplaces,
COALESCE(NULLIF(TPP.id_mkt_lojista, ''), 0) AS id_mkt_lojista
,
TPP.unidade_medida,
TPP.unidade_medida_ativo as unidade_medida_ativo_produto,
TPP.unidade_medida_legenda as unidade_medida_legenda_produto,
TPP.unidade_medida as unidade_medida_produto,
TPP.unidade_medida_unidade_multiplicadora as unidade_medida_unidade_multiplicadora_produto,
TPP.unidade_medida_altura_maxima as unidade_medida_altura_maxima_produto,
TPP.unidade_medida_altura_minima as unidade_medida_altura_minima_produto,
TPP.unidade_medida_largura_maxima as unidade_medida_largura_maxima_produto,
TPP.unidade_medida_largura_minima as unidade_medida_largura_minima_produto,
TPP.unidade_medida_forma_venda as unidade_medida_forma_venda_produto,
TPP.unidade_medida_preco_base_produto as unidade_medida_preco_base_produto,
TUML.legenda as unidade_medida_legenda_loja,
TUML.legenda_2 as unidade_medida_legenda_2_loja,
TUML.legenda_3 as unidade_medida_legenda_3_loja,
TUML.legenda_4 as unidade_medida_legenda_4_loja,
TUML.legenda_5 as unidade_medida_legenda_5_loja,
TUML.unidade_multiplicadora as unidade_medida_unidade_multiplicadora_loja,
TUML.altura_maxima as unidade_medida_altura_maxima_loja,
TUML.altura_minima as unidade_medida_altura_minima_loja,
TUML.largura_maxima as unidade_medida_largura_maxima_loja,
TUML.largura_minima as unidade_medida_largura_minima_loja,
TUML.forma_venda as unidade_medida_forma_venda_loja,
TUML.preco_base_produto as unidade_medida_preco_base_loja,
CTUM.legenda as unidade_medida_legenda_central,
CTUM.unidade_multiplicadora as unidade_medida_unidade_multiplicadora_central,
CTUM.altura_maxima as unidade_medida_altura_maxima_central,
CTUM.altura_minima as unidade_medida_altura_minima_central,
CTUM.largura_maxima as unidade_medida_largura_maxima_central,
CTUM.largura_minima as unidade_medida_largura_minima_central,
CTUM.forma_venda as unidade_medida_forma_venda_central,
CTUM.preco_base_produto as unidade_medida_preco_base_central
,
TPP.id_produto_marca_fabricante as id_fabricante,
TPP.id_produto_marca_fabricante,
TPP.id_produto_marca_fabricante as id_mf,
vpmff.titulo as marca_fabricante_titulo,
vpmff.titulo as titulo_fabricante,
vpmff.titulo as fabricante_produto,
vpmff.imagem,
vpmff.imagem as fabricante_imagem,
vpmff.imagem as imagem_fabricante,
vpmff.id as fabricante_id
,
TPP.imagem_secundaria,
TPP.imagem_principal,
TPP.filtros_personalizados,
TPP.preco_custo,
TPP.preco_pf,
TPP.preco_pj,
TPP.peso,
TPP.comprimento,
TPP.largura,
TPP.altura,
TPP.cubagem,
TPP.qtde_estoque,
TPP.qtde_estoque_total,
TPP.qtde_variacaodo_produto,
TPP.variacoes,
TPP.variacao,
TPP.encontrarMenorVariacao,
TPP.kit_pode_vender_separado,
TPP.kit_dimensoes_personalizadas,
TPP.tags,
TPP.id_forms,
TPP.produto_frete_volumes,
TPP.volumes,
TPP.title,
TPP.keyphrases,
TPP.description,
TPP.tagadicionais,
TPP.cod_referencia,
TPP.frete_gratis,
TPP.subtitulo,
TPP.descontos_produto,
TPP.promocao_data_inicio,
TPP.promocao_data_encerramento,
TPP.imposto_pf_pj,
TPP.taxonomy,
TPP.exibir_google_feed,
TPP.exibir_face_feed,
TPP.taxonomy_genero,
TPP.taxonomy_idade,
TPP.dias_adicionais,
TPP.titulo,
TPP.ativo,
TPP.id,
TPP.formato_produto,
TPP.qtde_cliques,
TPP.id as id_produto,
TPP.situacao_produto,
TPP.sob_consulta,
TPP.data_validade,
TPP.tempo_garantia,
TPP.selecionar_tecido,
IF(
TRIM(COALESCE(TPP.opcao_variacao_produto, '')) != ''
AND FIND_IN_SET(
LOWER(TRIM(TPP.opcao_variacao_produto)),
'select_,quadrado,bolas,fotos'
) > 0,
TPP.opcao_variacao_produto,
'select_'
) AS opcao_variacao_produto,
IF(
TRIM(COALESCE(TPP.filtro_info, '')) != '',
TPP.filtro_info,
'INFO. EXTRA'
) AS filtro_info,
IF(
TRIM(COALESCE(TPP.filtro_cor, '')) != '',
TPP.filtro_cor,
'COR:'
) AS filtro_cor,
TPP.id_origem_cadastro,
TPP.atributos_caracteristicas,
TPP.atributos_caracteristicas_mkts,
TPP.servicos_extra_produto,
TPP.textos,
TPP.videos,
TPP.galeria,
TPP.id_produto_imagem_informativa,
TPP.materiais,
TPP.origem_fiscal,
TPP.gtin_embalagem,
TPP.cest,
TPP.ncm,
TPP.nbm,
TPP.ean,
TPP.gtin,
TPP.data_cadastro,
TPP.data_alteracao,
TPP.unidade_medida
,
TPP.preco_tipo,
CASE
WHEN TPP.preco_tipo = '1' THEN
AVG(TPPE_AGG.preco_pf)
ELSE
NULL
END AS preco_pf_estado,
CASE
WHEN TPP.preco_tipo = '1' THEN
AVG(TPPE_AGG.preco_pj)
ELSE
NULL
END AS preco_pj_estado,
CASE
WHEN TPP.preco_tipo = '1' THEN
CONCAT(
'{',
GROUP_CONCAT(
DISTINCT JSON_QUOTE(TPPE_AGG.id_estado_uf), ': ',
JSON_OBJECT(
'preco_pj', TPPE_AGG.preco_pj,
'preco_pf', TPPE_AGG.preco_pf
)
ORDER BY TPPE_AGG.id_estado_uf
),
'}'
)
ELSE NULL
END AS precos_estados
,
IF(GROUP_CONCAT(TPLP.id) IS NOT NULL,
CONCAT(GROUP_CONCAT(
DISTINCT JSON_OBJECT(
'id', TPLP.id,
'estados', TPLP.estados,
'por_estados', TPLP.por_estados,
'id_itens', TPLP.id_itens,
'tipo_vinculo_clientes_view', TPLP.tipo_vinculo_clientes_view,
'tipo_desconto_acrescimo', TPLP.tipo_desconto_acrescimo,
'tipo_vinculo', TPLP.tipo_vinculo,
'tipo_vinculo_itens', TPLP.tipo_vinculo_itens,
'tipo_vinculo_integracoes', TPLP.tipo_vinculo_integracoes,
'tipo_vinculo_clientes', TPLP.tipo_vinculo_clientes,
'enviando_ou_recebendo', TPLP.enviando_ou_recebendo,
'porcetagem', TPLP.porcetagem,
'data_inicio', TPLP.data_inicio,
'data_encerramento', TPLP.data_encerramento,
'eterno', TPLP.eterno,
'ativo', TPLP.ativo,
'mostrar_selo_listagem_produtos', TPLP.mostrar_selo_listagem_produtos,
'atribuir_regra_integracao', TPLP.atribuir_regra_integracao,
'titulo', TPLP.titulo
)
)),
NULL
) AS regra_atribuida,
CASE
WHEN TPP.formato_produto = 'K' THEN
CASE
WHEN GROUP_CONCAT(SubJoin.id) IS NOT NULL THEN
CONCAT(
'[',
GROUP_CONCAT(
DISTINCT JSON_OBJECT(
'peso', SubJoin.peso,'altura', SubJoin.altura,'cubagem', SubJoin.cubagem,'largura', SubJoin.largura,'preco_pf', SubJoin.preco_pf,'preco_pj', SubJoin.preco_pj,'comprimento', SubJoin.comprimento,'preco_custo', SubJoin.preco_custo,
'formato_produto', SubJoin.formato_produto,
'id_variacao', SubJoin.id,
'ativo_variacao', SubJoin.ativo_variacao,
'ativo_produto', SubJoin.ativo_produto,
'qtde_minima', SubJoin.qtde_minima,
'id_produto', SubJoin.id_sugestao,
'qtde_estoque', SubJoin.qtde_estoque,
'titulo', SubJoin.titulo,
'cod_referencia', SubJoin.cod_referencia,
'unidade_medida', SubJoin.unidade_medida
)
),
']'
)
ELSE NULL
END
ELSE NULL
END AS kit_produtos
,
TPP.id_mkt_lojista
FROM table_produto_produto TPP
LEFT JOIN table_produto_grupo_categoria_subcategoria TPGCS ON TPGCS.id_produto = TPP.id
LEFT JOIN table_produto_grupo TGRUPO ON TGRUPO.id = TPGCS.id_produto_grupo AND TGRUPO.ativo = '1'
LEFT JOIN table_produto_categoria TCATEGORIA ON TCATEGORIA.id = TPGCS.id_produto_categoria AND TCATEGORIA.ativo = '1'
LEFT JOIN table_produto_subcategoria TSUBCATEGORIA ON TSUBCATEGORIA.id = TPGCS.id_produto_subcategoria AND TSUBCATEGORIA.ativo = '1'
LEFT JOIN central_table_tipo_produto VTP ON VTP.id = TPP.tipo_produto
LEFT JOIN usuario UMKT_2 ON UMKT_2.id = COALESCE(NULLIF(TPP.id_mkt_lojista, ''), 0)
LEFT JOIN table_produto_unidades_medidas TUML ON TUML.unidade = TPP.unidade_medida
LEFT JOIN central_table_unidades_medidas CTUM ON CTUM.unidade = TPP.unidade_medida
LEFT JOIN table_produto_marca_fabricante vpmff ON vpmff.id = TPP.id_produto_marca_fabricante
LEFT JOIN (
SELECT
tpv1.*
FROM table_produto_variacao tpv1
JOIN (
SELECT
id_produto,
MIN(preco_pf) AS menor_preco
FROM table_produto_variacao
WHERE ativo = '1'
GROUP BY id_produto
) tpv2
ON tpv1.id_produto = tpv2.id_produto AND tpv1.preco_pf = tpv2.menor_preco
WHERE tpv1.ativo = '1'
) AS TPV ON TPV.id_produto = TPP.id
LEFT JOIN (
SELECT
id_produto,
id_variacao,
id_estado_uf,
MAX(preco_pf) AS preco_pf,
MAX(preco_pj) AS preco_pj
FROM table_produto_preco_estado
GROUP BY id_produto, id_variacao, id_estado_uf
) AS TPPE_AGG
ON TPPE_AGG.id_produto = TPP.id
AND TPPE_AGG.id_variacao = TPV.id
LEFT JOIN table_produto_lista_precos TPLP ON ( TPLP.tipo_vinculo_clientes is NULL OR TPLP.tipo_vinculo_clientes = '0' OR TPLP.tipo_vinculo_clientes = '' ) AND TPLP.tipo_desconto_acrescimo <> '' AND TPLP.ativo = '1' AND TPLP.porcetagem > 0 AND ((TPLP.data_inicio <= CURDATE() AND TPLP.data_encerramento >= CURDATE()) OR TPLP.eterno = '1')
LEFT JOIN (
SELECT
TPVKIT_AGG.peso,TPVKIT_AGG.altura,TPVKIT_AGG.cubagem,TPVKIT_AGG.largura,TPVKIT_AGG.preco_pf,TPVKIT_AGG.preco_pj,TPVKIT_AGG.comprimento,TPVKIT_AGG.preco_custo,
TPKIT2.id AS id,
TPVKIT_AGG.ativo AS ativo_variacao,
TPPKIT.ativo AS ativo_produto,
TPKIT2.qtde_minima,
TPKIT2.id_sugestao,
COALESCE(TPVKIT_AGG.qtde_estoque, 0) AS qtde_estoque,
TPKIT2.id_produto,
TPPKIT.titulo,
TPPKIT.formato_produto,
TPPKIT.cod_referencia,
TPPKIT.unidade_medida
FROM table_produto_sugestao_kit TPKIT2
/* 🔽 PRÉ-AGREGA VARIAÇÕES */
INNER JOIN (
SELECT
id_produto,
MAX(ativo) AS ativo,
SUM(qtde_estoque) AS qtde_estoque,
MAX(peso) AS peso,
MAX(altura) AS altura,
MAX(cubagem) AS cubagem,
MAX(largura) AS largura,
MAX(preco_pf) AS preco_pf,
MAX(preco_pj) AS preco_pj,
MAX(comprimento) AS comprimento,
MAX(preco_custo) AS preco_custo
FROM table_produto_variacao
GROUP BY id_produto
) TPVKIT_AGG ON TPVKIT_AGG.id_produto = TPKIT2.id_sugestao
INNER JOIN table_produto_produto TPPKIT
ON TPPKIT.id = TPKIT2.id_sugestao
) AS SubJoin
ON SubJoin.id_produto = TPP.id
AND TPP.formato_produto = 'K'
WHERE 1
AND (
TPP.formato_produto != 'K'
OR (
TPP.formato_produto = 'K'
AND SubJoin.id_produto IS NOT NULL
)
)
AND TPP.ativo = '1'
AND TPGCS.id_produto = TPP.id AND TPGCS.id_produto_subcategoria = '2104'
AND TPP.idioma = 'br'
GROUP BY TPP.id
ORDER BY SUM(TPV.qtde_estoque) DESC, TPP.titulo ASC
LIMIT 0,24