Página 3 de 5

Erro em comandos SQL

Enviado: 06 Nov 2015 16:10
por JoséQuintas
Com certeza não é o ideal, mas se entendi direito, este comando já agilizaria um pouco, apesar de ainda ser um produto por vez.

Código: Selecionar todos

"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?

Erro em comandos SQL

Enviado: 06 Nov 2015 16:30
por JoséQuintas
Testei isto no mysql:

Código: Selecionar todos

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.

Erro em comandos SQL

Enviado: 08 Mar 2016 12:46
por Poka
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

Erro em comandos SQL

Enviado: 08 Mar 2016 15:23
por JoséQuintas
Talvez parecido com isto?

not isnull( historico ) and Length( Trim( historico ) ) = 0

Erro em comandos SQL

Enviado: 08 Mar 2016 16:55
por Poka
V A L E U Quintas

um abraço

Poka

Erro em comandos SQL

Enviado: 10 Mar 2016 14:43
por alxsts
Olá!

Teste isto:

Código: Selecionar todos

WHERE CHAR_LENGTH ( Trim( historico ) ) = 0 OR historico IS NULL

Erro em comandos SQL

Enviado: 11 Mar 2016 15:45
por Poka
Olá ,

Quintas,

Código: Selecionar todos

str:=" select data , codproce from "+xarquivo+" where not isnull( historico ) and Length( Trim( historico ) ) = 0 ;"  
dá esse erro na execução

Código: Selecionar todos

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

Código: Selecionar todos

str:="select data , codproce from "+xarquivo+" where trim(historico)='';"    
Alexandre, deu certo também

Código: Selecionar todos

str:=" select data , codproce from "+xarquivo+" where  CHAR_LENGTH ( Trim( historico ) ) = 0 OR historico IS NULL    ;"      
Obrigado a todos

Poka

Erro em comandos SQL

Enviado: 11 Mar 2016 16:41
por alxsts
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:

Código: Selecionar todos

-- 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:

Código: Selecionar todos

-- 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:

Código: Selecionar todos

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

Erro em comandos SQL

Enviado: 06 Set 2016 16:53
por Poka
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

Erro em comandos SQL

Enviado: 06 Set 2016 18:15
por JoséQuintas
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:

Código: Selecionar todos


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.

Erro em comandos SQL

Enviado: 09 Set 2016 14:35
por Poka
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

Erro em comandos SQL

Enviado: 09 Set 2016 14:57
por JoséQuintas
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

Erro em comandos SQL

Enviado: 09 Set 2016 15:19
por JoséQuintas
Eu usava esta nos DBFs, me baseei nela
Agrupar totais por data, de três documentos diferentes.

Código: Selecionar todos

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:

Código: Selecionar todos

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

Erro em comandos SQL

Enviado: 09 Set 2016 15:23
por JoséQuintas
E expandindo, assim:

Código: Selecionar todos

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

Erro em comandos SQL

Enviado: 09 Set 2016 15:58
por Poka
o FIRST tem sim.

valeu Quintas, vou testar aqui com esses exemplos.

Poka