GARANTIR DESCONTO

Fórum IF MySQL #561677

29/08/2016

0

Gostaria de saber oque está errado na sintaxe desse código


SELECT seg_categoria, Cliente, categoria,
(IF(seg_categoria = 'VPE',
IF(segmento_carteira LIKE '%campo1%' OR segmento_carteira LIKE '%campo2%' OR segmento_carteira LIKE '%campo3%',
'nome0',)

IF(segmento_carteira LIKE '%Campo4%' OR segmento_carteira LIKE '%campo5%' OR segmento_carteira LIKE '%campo6%'
OR segmento_carteira LIKE '%campo7%' OR segmento_carteira LIKE '%camp8%',
'nome1',)
,)

IF(seg_categoria = 'VPK','nom2',)

IF(seg_categoria = ('TOP' OR 'MAS'),'nome3',)
) AS 'responsavel'
FROM `dbext`.`tr_pedidos_vantive_completa` )
Luiz

Luiz

Responder

Post mais votado

29/08/2016

Luiz, tente o código abaixo que refiz utilizando o CASE WHEN:

SELECT SEQ_CATEGORIA, CLIENTE, CATEGORIA,
CASE WHEN SEQ_CATEGORIA = 'VPE' THEN
CASE WHEN segmento_carteira LIKE '%campo1%' OR segmento_carteira LIKE '%campo2%' OR segmento_carteira LIKE '%campo3%' THEN
'nome0'
ELSE
CASE WHEN segmento_carteira LIKE '%Campo4%' OR segmento_carteira LIKE '%campo5%' OR segmento_carteira LIKE '%campo6%' OR segmento_carteira LIKE '%campo7%' OR segmento_carteira LIKE '%camp8%' THEN
'nome1'
END
END
ELSE
CASE WHEN seg_categoria = 'VPK' THEN
'nom2'
ELSE
CASE WHEN seg_categoria IN ('TOP','MAS') THEN
'nome3'
END
END
END AS 'responsavel'
FROM `dbext`.`tr_pedidos_vantive_completa`

OBS: Essas validações utilizando vários LIKES e OR, são muito pesadas para o banco. Tente estruturar seu banco de forma que os campos de 1 à 8 sejam um campo só de uma tabela. Você poderia resolver isso, talvez utilizando uma subquery que reuni-se na forma de union todos esses campos eliminando assim os Likes e Or's.

Guilherme Toledo

Guilherme Toledo
Responder

Gostei + 3

Mais Posts

29/08/2016

Claudio Lopes

Luiz está dificil de ler o seu codigo, tem como identar ele? outra coisa sempre utilize "
" para facilitar.
Outra coisa acho que o CASE WHEN pode te ajudar mais Utilizando Select Case com MySQL
Responder

Gostei + 1

28/10/2016

Luiz

MUito obrigado pela atenção utilizei case e when deu certo
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar