Dica com SELECT no SQL da Consulta

(Kleyber) #1

Olá pessoal,

Me deparei na semana passada com um problema bem estranho. Eu criei um select no MySQL Query Browser e que funciona perfeito, só que no momento em que inseri esse select em uma consulta no SC, dava erro na hora de gerar o fonte. O select estava assim:

select
c.datalanc,
l.uf_loja,
l.cod_loja,
sum(if(p.tipocorretor=‘Loja’,c.comis_loj,0)) as comloja,
sum(if(p.tipocorretor=‘Agente’,c.comis_age,0)) as comagente,
sum(if(p.tipocorretor=‘Loja’,c.vlrbase,0)) as valbalcao,
sum(if(p.tipocorretor=‘Agente’,c.vlrbase,0)) as valagente,
sum(if(c.combruta<>0,c.vlrbase,0)) as totprod,
sum(if(c.combruta=0,c.vlrbase,0)) as totnp,
sum(c.vlrbase) as totgeral
from
tab_lojas l
inner join tab_prot p on (p.cod_loja=l.cod_loja)
inner join tab_comissao c using (ade)
group by
l.cod_loja
order by l.uf_loja

E desta forma não funcionava. O pessoal do suporte da Netmake havia me dito que a função SUM() do MySQL dava problemas no parser, mas descobri que o problema é bem simples. Basta que em toda comparação com dados do tipo caracter, deve se usar ASPAS DUPLAS e não SIMPLES porque o parser do SC usa aspas simples na hora de montar o comando SQL. Daí então fiz assim:

select
c.datalanc,
l.uf_loja,
l.cod_loja,
sum(if(p.tipocorretor=“Loja”,c.comis_loj,0)) as comloja,
sum(if(p.tipocorretor=“Agente”,c.comis_age,0)) as comagente,
sum(if(p.tipocorretor=“Loja”,c.vlrbase,0)) as valbalcao,
sum(if(p.tipocorretor=“Agente”,c.vlrbase,0)) as valagente,
sum(if(c.combruta<>0,c.vlrbase,0)) as totprod,
sum(if(c.combruta=0,c.vlrbase,0)) as totnp,
sum(c.vlrbase) as totgeral
from
tab_lojas l
inner join tab_prot p on (p.cod_loja=l.cod_loja)
inner join tab_comissao c using (ade)
group by
l.cod_loja
order by l.uf_loja

E funcionou blz. Fica aí a dica