Quebra de sequencia

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Quebra de sequencia

Mensagem por janio »

Ola a todos,

Tenho uma tabela com numeros sequenciais e preciso saber se houve quebra nessa sequencia e quais numeros estao faltando, tipo:

Código: Selecionar todos

1
2
3
5
6
7
Que Query poderia mim retonar informando que o numero 4 esta faltando na sequencia?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Quebra de sequencia

Mensagem por fladimir »

Veja se te ajuda

Código: Selecionar todos

select a.id -1 from tabela a.id <> 1 and not exists (select id from tabela b where b.id = (a.id-1) )
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Quebra de sequencia

Mensagem por janio »

Cara, esses comandos sao tao loucos (pra mim) q nao estou nem sabendo montar aqui com os meus dados kkkkk

Vou passar os dados pra ver se consegue montar a query pra mim.

Tabela : a03ped
campo : numccf

preciso saber se ha quebra de sequencia nesse campo (numccf)
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Quebra de sequencia

Mensagem por alxsts »

Olá!

O artigo How to find missing values in a sequence with SQL é bem interessante, apesar de ser antigo.

(No exemplo do Fladimir falta a cláusula WHERE)



How to find missing values insequence with SQL
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Quebra de sequencia

Mensagem por fladimir »

Exato Alexandre

Copiei e colei e passou desapercebido,

Agora pegando a necessidade do colega com o exemplo do Alexandre segue código de teste montado.

Código: Selecionar todos

create table a03ped ( NumCCF int not null primary key );

insert into a03ped (NumCCF) values (1), (2), (3), (5), (6), (7);
    
select start, stop from (
  select m.NumCCF + 1 as start,
    (select min(NumCCF) - 1 from a03ped as x where x.NumCCF > m.NumCCF) as stop
  from a03ped as m
    left outer join a03ped as r on m.NumCCF = r.NumCCF - 1
  where r.NumCCF is null
) as x
where stop is not null;   
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Quebra de sequencia

Mensagem por janio »

Eita lasqueira,

Isso tudo so pra saber que o 4 ta faltando? :P

kkk

Ver aqui no meu codigo o que acontece...
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Quebra de sequencia

Mensagem por Poka »

Olá

Como não vi como fazer direto em sql, tenho uma função, que resolve , veja se ajuda

Código: Selecionar todos

stat func FverPulado(xtabela,xcampo)
   /*
    exemplo de chamada    
    nomeMatrizRetorno:=FverPulado( "cadcli","codigo") 
			 verifica se tem numeracao pulado na tabela
			 retorna matriz com os numeros pulados
			 fb_executa é a minha rotina para executar o str, veja a sua
			 m_select ´e oretorno da minha funcao f_executa()
			 uso strzero  e val , porque os meus codigo sao sempre completos , exe 000001
			 
			*/
			local xmin,xmax , m_pulados:={} , a

			Str:="select Min("+xcampo+"),Max( "+xcampo+") from "+xtabela+";"      // vefifico a faixa de pesquisa 
			fb_executa()   // -é a minha rotina que executa o str  e retorna matriz m_select, verifique a sua
   xmin:=m_select[1,1]

   xmax:= m_select[1,2]
   for a:= val(xmin) to val(xmax)
      // strzero, porque só trablho com numeros completos do tipo "00001" 
      str:="select first 1 "+xcampo+" from "+xtabela + " where "+xcampo+" =  '"+ strzero(a,len(xmin)) +"';"  
      fb_executa()
      if empty( m_select)   
         aadd(m_pulados,strzero(a,len(xmin) ) )
      endif
   next   
   msginfo( str(len(m_pulados),5) +" registros pulados") 
retu m_pulados			
Poka
Responder