Clipper On Line • Ver Tópico - Erro em comandos SQL

Erro em comandos SQL

Discussão sobre SQL

Moderador: Moderadores

 

Erro em comandos SQL

Mensagempor JoséQuintas » 06 Nov 2015 15:10

Com certeza não é o ideal, mas se entendi direito, este comando já agilizaria um pouco, apesar de ainda ser um produto por vez.

"SELECT FIRST 1 E.DATA, E.QTDSLDAT FROM FICHACI E WHERE E.CODPROD=" + XCODIGO ;
+ " AND E.DATA <=" + FB_DATA( XDATA ) + " ORDER BY E.DATA, E.FB CONTROL DESC"


O que tem em mx? Todos os produtos, ou somente uma seleção?
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor JoséQuintas » 06 Nov 2015 15:30

Testei isto no mysql:

select 
     qcip, qcqtd, max( qcdatetime )
     from JPCEPQTD
     group by qcip
     order by qcdatetime desc


Tudo indica que retornou IP, qtde de consultas, e data referentes à última consulta de cada IP.
Para o caso do estoque, acrescentar condição data <= limite, e ordem ( data + lancto ) decrescente

Foi instantâneo, mas só tem 13.000 registros.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor Poka » 08 Mar 2016 12:46

Olá a todos

José Quintas e Alexandre, quanto ao problema anterior, ainda vou voltar a mexer e retorno, por enquanto a situação é a seguinte :

quero deletar todos os registros que tem o hostórico vazio ( não está como null)

Não vi no firebird uma função tipo empty ou len para fazer o teste

por exemplo se tivesse o empty
str:=" delete from movpro where empty(historico);"

Tem alguma idéia como fazer?

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 382
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 15 vezes

Erro em comandos SQL

Mensagempor JoséQuintas » 08 Mar 2016 15:23

Talvez parecido com isto?

not isnull( historico ) and Length( Trim( historico ) ) = 0
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor Poka » 08 Mar 2016 16:55

V A L E U Quintas

um abraço

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 382
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 15 vezes

Erro em comandos SQL

Mensagempor alxsts » 10 Mar 2016 14:43

Olá!

Teste isto:
WHERE CHAR_LENGTH ( Trim( historico ) ) = 0 OR historico IS NULL
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2189
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 150 vezes

Erro em comandos SQL

Mensagempor Poka » 11 Mar 2016 15:45

Olá ,

Quintas,
str:=" select data , codproce from "+xarquivo+" where not isnull( historico ) and Length( Trim( historico ) ) = 0 ;"  

dá esse erro na execução
Error HY000 - [ODBC Firebird Driver][Firebird]Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 68
and

fiz assim e deu certo, não sabia que tinha o TRIM no Firebird
str:="select data , codproce from "+xarquivo+" where trim(historico)='';"    

Alexandre, deu certo também
str:=" select data , codproce from "+xarquivo+" where  CHAR_LENGTH ( Trim( historico ) ) = 0 OR historico IS NULL    ;"      


Obrigado a todos

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 382
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 15 vezes

Erro em comandos SQL

Mensagempor alxsts » 11 Mar 2016 16:41

Olá!

Apenas para enriquecer o tópico:

IsNull é uma função do SQL Server que retorna o valor especificado caso o outro valor contenha NULL.

Exemplos SQL Server:

-- considerando que o campo x seja do tipo alfanumérico
SELECT IsNull( x, 'Campo nulo' )

-- considerando que o campo x seja do tipo numérico
SELECT IsNull( x, 0 )

-- considerando que o campo x seja do tipo datetime
SELECT IsNull( x, '1900-01-01T00:00:00.000' )


No Firebird não existe esta função mas pode-se usar a função Coalesce que também existe no SQL Server:
-- considerando que o campo x seja do tipo alfanumérico
SELECT Coalesce( x, 'Campo nulo' )


No MySQL e MariaDB, existe a função IfNull() que corresponde à IsNull() do SQL Server. A Coalesce() também existe nos dois.

Coalesce() é diferente de IsNull() e IfNull() pois aceita uma lista de vários valores como parâmetro e retorna o primeiro não NULL, caso exista:
SELECT COALESCE(NULL,NULL,1);     -> retorna 1

SELECT COALESCE(NULL,NULL,NULL);  -> retorna NULL


As funções Coalesce(), IsNull() e IfNull() são diferentes do operador IS [NOT] NULL.

Coalesce IsNull IfNull NULL
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2189
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 150 vezes

Erro em comandos SQL

Mensagempor Poka » 06 Set 2016 16:53

Olá a todos

Um tabela de notas com 30.000 notas +-
gostaria de mostrar somente a 10 ultimas notas AUTORIZADAS e as que estiverem com status NÃO AUTORIZADAS.

exemplo campos docum e status ( 1 NÃO AUTORIZADAS E 2 AUTORIZADAS).

e também mostrar em ordem ascendente

ex:

select first 10 docum from notaD order by docum desc

consigo pegar as últimas , mas mostra em ordem descendente, se eu organizar a matriz\ resolve, mas tem como fazer tudo no select?.
e também acrescentar as não autorizadas. Então seria 10 ultimas (autorizadas) mais as (não autorizadas) em ordem ascendente.

Agradeço qualquer ajuda.

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 382
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 15 vezes

Erro em comandos SQL

Mensagempor JoséQuintas » 06 Set 2016 18:15

Se não for de um jeito, vai de outro.... rs

Tem o sub-select, e tem a união de select.
No MySQL, talvez isto:


SELECT * FROM
   (
      SELECT DOCUM, STATUS FROM NOTAD WHERE STATUS = 1
      UNION ALL
      SELECT DOCUM, STATUS FROM NOTAD WHERE STATUS=2 ORDER BY DOCUM DESC LIMIT 10
   ) AS NOTAS
   ORDER BY DOCUM


Acho que deu pra entender.
São dois selects, junta o resultado dos dois, e depois coloca tudo em ordem.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor Poka » 09 Set 2016 14:35

Olá Quintas
Obrigado por responder.
Está dando erro na cláusula LIMIT
-comando desconhecido
uso o firebird , deve ser por isso, não vi essa cláusula no select do firefird.
se tiro o firebird dá erro no ultimo order by
- comando inválido
estranho, não era para dar.
mas com Union all acho que dá chegar no que eu quero, vou tentando aqui, se você tiver mais alguma idéia....

Obrigado

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 382
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 15 vezes

Erro em comandos SQL

Mensagempor JoséQuintas » 09 Set 2016 14:57

Se não me engano, chegou a usar num post anterior, e seria FIRST.

No MySQL é LIMIT
No SQL Server é TOP
No Firebird acho que é FIRST
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor JoséQuintas » 09 Set 2016 15:19

Eu usava esta nos DBFs, me baseei nela
Agrupar totais por data, de três documentos diferentes.

select
   cnDatEmi DtEmissao, count(*) CtrcQtd, Sum(cnPeso) CtrcPeso, Sum(cnValor) CtrcValor, Sum(cnVlMerc) ValorMerc, 0 CFQtd, 0 CFValor, 0 ColetaQtd, 0 ColetaVlr, 0 ColVlMerc
   into lixo
   From gtconhe
   group by DtEmissao
union all
select
   cfDatEmi DtEmissao, 0 CtrcQtd, 0 CtrcPeso, 0 CtrcValor, 0 ValorMerc, count(*) CFQtd, Sum(CFValor) CfValor, 0 ColetaQtd, 0 ColetaVlr, 0 ColVlMerc
   From gtcontr
   group by DtEmissao
union all
Select
   ceDatEmi DtEmissao, 0 CtrcQtd, 0 CtrcPeso, 0 CtrcValor, 0 ValorMerc, 0 CFQtd, 0 CFValor, Count(*) ColetaQtd, Sum(ceValFat) ColetaVlr, Sum(jpnftr1.ntValor) ColVlMerc
   from jpordem
   left join jpnftr1 on jpordem.ceNumLan = jpnftr1.ntColeta
   group by DtEmissao


Tentei agora no MySQL, e ele não se deu bem com o limit.
Mas funcionou assim:

select * from 
( select kkchave as x from jpnfekey limit 10 ) AS x1
union all
select * from
( select kkchave as x from jpnfekey limit 10 ) as x2
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor JoséQuintas » 09 Set 2016 15:23

E expandindo, assim:

select * from 
(
   select * from
      ( select kkchave as x from jpnfekey limit 10 ) AS x1
   union all
   select * from
      ( select kkchave as x from jpnfekey limit 10 ) as x2
) AS x3

ORDER BY x


Como eu disse, não vai de um jeito, vai de outro.... rs
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11533
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 736 vezes

Erro em comandos SQL

Mensagempor Poka » 09 Set 2016 15:58

o FIRST tem sim.

valeu Quintas, vou testar aqui com esses exemplos.

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 382
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 15 vezes

Anterior Próximo



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro