[RESOLVIDO] Erro na montagem da Query para Mysql

Tenho uma consulta que usa a seguinte query:

SELECT
fis_nf.nf,
fis_nf.cgc_cpf,
fis_nf.emissao,
fis_nf.entrega,
fis_nf.nat_oper,
fis_nf.total_prod,
fis_nf.total,
cliente.razao,
cliente.fantasia,
cliente.vendedor,
vendedor.fantasia
FROM
fis_nf INNER JOIN cliente ON fis_nf.cgc_cpf = cliente.cgc_cpf
INNER JOIN vendedor ON cliente.vendedor = vendedor.codigo
INNER JOIN fis_natu ON fis_nf.nat_oper = fis_natu.codigo
WHERE
fis_natu.natureza=‘5101’ or fis_natu.natureza = ‘6101’ or fis_natu.natureza = ‘5102’ or fis_natu.natureza = ‘6102’ or fis_natu.natureza = ‘5910’ or fis_natu.natureza = ‘6910’
ORDER BY
fis_nf.nf DESC

Após execução o erro ocorre na query montada pelo SC abaixo:

SELECT cliente.razao as cliente_razao, fis_nf.nf as fis_nf_nf, fis_nf.emissao as fis_nf_emissao, fis_nf.entrega as fis_nf_entrega, fis_nf.nat_oper as fis_nf_nat_oper, fis_nf.total_prod as fis_nf_total_prod, fis_nf.total as fis_nf_total, cliente.fantasia as cliente_fantasia, vendedor.fantasia as vendedor_fantasia, fis_nf.cgc_cpf as fis_nf_cgc_cpf from fis_nf INNER JOIN cliente ON fis_nf.cgc_cpf = cliente.cgc_cpf INNER JOIN vendedor ON cliente.vendedor = vendedor.codigo INNER JOIN fis_natu ON fis_nf.nat_oper = fis_natu.codigo where (fis_natu.natureza=‘5101’ or fis_natu.natureza = ‘6101’ or fis_natu.natureza = ‘5102’ or fis_natu.natureza = ‘6102’ or fis_natu.natureza = ‘5910’ or fis_natu.natureza = ‘6910’) order by fis_nf.nf DESC[size=14pt], LIMIT 0,22[/size]

Observe que foi acrescentado o LIMIT com uma vírgula antes. Posso tirar o ORDER BY que funciona, porém quando peço para classificar uma coluna, o erro volta porque acrescenta na próxima query o [size=14pt], LIMIT 0,22[/size]

Tirando a vírgula a query funciona normalmente no bd. Do jeito que ela foi montada dá erro.

Onde estou errando?

Obrigado pela ajuda.

SC V 8.00.0014

Utilize a janela ORDER BY no item SQL do menu da aplicação e não direto na instrução do select.

Haroldo,

Desculpe-me mas não entendi onde você diz para colocar a cláusula ORDER BY.

O vídeo abaixo mostra o erro com a cláusula como está acima:
https://drive.google.com/file/d/0B-fdokU0FqjZWHNXX3dIUThzQWc/view?usp=sharing

O vídeo abaixo mostra o erro sem a cláusula, agora ele aparece na execução da classificação da coluna:
https://drive.google.com/file/d/0B-fdokU0FqjZbVZYd0hTa0djMGM/view?usp=sharing

Tentei criar nova aplicação somente com o comando SQL pois poderia ser alguma “sujeira” e ocorreu o mesmo erro. Muito esquisito pois tenho outras aplicações semelhantes que uso esse recurso…
Não achei o que pode estar dando errado.

Obrigado
Elcio

Bom dia, faça 3 testes:

  • coloque em configuração paginação total.
  • tire do seu where a condição or, ficando WHERE fis_natu.natureza in (‘5101’,‘6101’,‘5102’,‘6102’,‘5910’,‘6910’)
  • tire seu where todo e vá em onScriptInit e coloquei sc_select_where(add) = “fis_natu.natureza in (‘5101’,‘6101’,‘5102’,‘6102’,‘5910’,‘6910’)”;

Rodrigo,

Muito obrigado. Achei muito mais claro usar o “in”, porém os resultados foram os mesmos (nas três sugestões). Aquela bendita vírgula (,) adicionada antes da cláusula LIMIT está dando o erro da query.

Não sei o que fazer!

Abraço

Faz mais um teste, verifica se você tem mais alguma coluna nf (fis_nf.nf) se não, renomeie esse campo para nf apenas (ex.: SELECT
fis_nf.nf as nf,
fis_nf.cgc_cpf,
fis_nf.emissao,
fis_nf.entrega,

ORDER BY
nf desc

Já tive esse problema por nomear o campo por algum outro nome que não esteja no banco.

Mesmo que o erro esteja no limit, pode ser essa consequência.

Rodrigo,
Obrigado por sua valiosa ajuda, mas fiz os testes e não funcionou mesmo assim.

Por outro lado, acredito ter achado uma parte do problema, que acredito ser do SC mesmo. Consegui fazer funcionar ao desabilitar a quebra dinâmica. Coloquei quebras estáticas e funcionou, não exatamente como eu gostaria.

Não vou fechar o tópico pois vou fazer mais alguns testes amanhã, porém de ante-mão acredito ser algum bug na quebra dinâmica que está acrescentando aquela virgulazinha bendita erroneamente.

Abraço

Boa noite,

Discutirei este problema com nossa equipe de bugs.

att,
Bernhard Bernsmann

Cria uma view desse select

Haroldo,

Criando a view funcionou corretamente, inclusive a quebra dinâmica.

Acredito portanto ser realmente um bug.

Obrigado a todos pela colaboração e aguardamos a correção.

Att