Fórum IF MySQL #561677
29/08/2016
0
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
Curtir tópico
+ 0Post mais votado
29/08/2016
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
Gostei + 3
Mais Posts
29/08/2016
Claudio Lopes
Outra coisa acho que o CASE WHEN pode te ajudar mais Utilizando Select Case com MySQL
Gostei + 1
28/10/2016
Luiz
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)