Marretar Interbase com SQL Ansi  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
Dayvson Clauber
JavaBaby
[Avatar]

Membro desde: 04/09/2002 17:04:35
Mensagens: 82
Offline

Caros amigos , to com um pequeno probleminha num bd interbase.
Eh o seguinte, tenho um bd em interbase q tem a seguinte estrutura:

id creditos historico

Onde ha varios registros em duplicidades, por erro de operacao de algum "bom" usuario..Sabem como eh..
Bem, estou tentando imaginar uma query no sql ANSI, onde eu possa eliminar todos os registros em duplicidades,
mas vejam bem..nao eh eliminar todos os registros, e apenas o clone deles.
Pois tamos com a seguinte situacao (exemplo):

id creditos historico
001 200 Bonus Jul/03
001 200 Bonus Jul/03
002 100 Bonus Jun/03
002 100 Bonus Jun/03
002 200 Bonus Jul/03
002 200 Bonus Jul/03
003 300 Bonus Jun/03
003 300 Bonus Out/02
003 300 Bonus Out/02


Ou seja, ha variacao de meses divergentes pessoal.. Isso que ta complicando mais a situacao, eu gostaria que
vcs pudessem me ajudar (Principalmente os feras de SQL daki do GUJ) onde eu viabilize uma maneira de retirar
os "clones".

Espero que possam me ajudar, pois no lugar onde to, n tem recurso de nada galera.. to aki em plena Luanda-Angola.. pense numa ilha para nos que n vivemos sem net, livros e etc... aff...
To contando com a colaboracao e compreensao de vcs...
1 gde abraco e te +

Dayvson Clauber!
[MSN] [ICQ]
Daniel Quirino Oliveira
Moderador
[Avatar]

Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline

Primeiro: crie uma tabela decente, em que tenha uma chave-primária. Assim você evita duplicidade de dados.
Em segundo, sobre o SQL para remover os dados tente isso (não testei):

onde <tabela> é, naturalmente, o nome da sua tabela.

Daniel Quirino Oliveira
[Email] [WWW]
Dayvson Clauber
JavaBaby
[Avatar]

Membro desde: 04/09/2002 17:04:35
Mensagens: 82
Offline

Hoje parece q eh meu dia de sorte.. vejam so agora o q ta acontecendo comigo qdo tento atraves do SQL Explorer acessar o maldito banco


Unknown database.
internal gds software consistency check(cannot find tip page(165))
Alias : NEWCONS

Alguem q trabalhe ai com delphi/interbase pode me esclarecer o pq disso??
[MSN] [ICQ]
edurezende
Thread.start()
[Avatar]

Membro desde: 17/10/2003 08:01:28
Mensagens: 28
Offline

Dentro do diretorio do interbase na pasta /bin tem o gbfix, ele vai tentar reparar teu banco.
Uma dica, se vc estiver usando o intebase 6.x entre no site da ibphoenix.com e baixe o firebird, já corrigiram muitos problemas encontrados no interbase 6.x.
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

acho que não é este o problema, parece que o banco foi feito em interbase 6/firebird e tu ta tentando abrir ele com o SQL Explorer/cliente da borland do interbase 5, ai o troço não funciona de geito nenhum
tenta baixar o IBO Console que é certeza que funciona

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
Dayvson Clauber
JavaBaby
[Avatar]

Membro desde: 04/09/2002 17:04:35
Mensagens: 82
Offline

Oh urubatan meu caro.. vc pode me passar o link de onde eu posso baixar esse tal d IBO Console.. e ele funciona da mesma forma que o SQL Explorer??
Outra coisa, eu to com tudo instalado da Versao 6 do delphi aki,... agora a makina onde esse bd foi feito eh q tudo eh versao 5 do delphi..isso tbm pode influenciar??
[MSN] [ICQ]
Dayvson Clauber
JavaBaby
[Avatar]

Membro desde: 04/09/2002 17:04:35
Mensagens: 82
Offline

Outra coisa, tem nem como eu pensar em download aqui.. pois to numa empresa que usa conexao dial up... to aki em luanda, angola bicho.. ai ja viu.. imagina fazerf downloaddesas paadas...
Vamos ver como vai ser essa bronca..sem contar q a pressao ta demais em cima do setor nosso aki na informatica..
[MSN] [ICQ]
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

o IBO Console pode baixar de
http://www.mengoni.it/downloads.html
são uns 3 mega mais ou menos

outra coisa, se não me engano o IB 6 não abre direto o banco do IB5 também, tem que fazer um backup no IB5 e restaurar no IB 6 (o arquivo de backup ele abre sem problema nenhum

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
anjomal
JavaEvangelist
[Avatar]

Membro desde: 12/12/2002 16:50:25
Mensagens: 362
Localização: Luanda/Angola
Offline

Uma otima ferramenta com varias features, sourceforge.net/projects/gmarathon, deve resolver seus problemas !!!



falow !!!

Anjo Mal é William Jammes de Oliveira

Somos oque repetidamente fazemos. A excelência, portanto, não é um feito. mas um hábito.
Aristóteles
[Email] [WWW] [MSN] [ICQ]
rfpsatin
JavaTeenager

Membro desde: 29/04/2003 11:44:02
Mensagens: 199
Offline

Deixa ver se entendi..

vc tem

campo1, campo2, campo3
1 2 122
1 2 122

e vc quer eliminar uma das 2 linhas de modo que fique apenas

campo1, campo2, campo3
1 2 122

????

bem, se for isso, a forma q o coloca fez o sql acho q não funciona



  • delete from <tabela> where id not in (select distinct(id) from <tabela>


  • pois sempre ira haver e por isso não elimina.

    Eu não sei resolver isto no Interbase.

    se alguém souber, fale ae...

    tive um problema deste num teste de inserção com 800 000 registros e mesmo tendo PK ele deixou repetir. Bem, no oracle há uma forma fácil de resolver isto.

    o oracle permite vc criar uma tabela com base noutra.

    assim, é só vc fazer

    create table <novatabela> as
    select * from <tabelaantiga>
    having count(id)=0

    por exemplo.

    contudo o interbase não aceita este tipo de sintaxi.

    Se alguém souber como criar uma tabela apartir de outra....
    resolve fácil o problema.

    "todavia para nós há um só Deus, o Pai, de quem são todas as coisas e para quem nós vivemos; e um só Senhor,
    Jesus Cristo, pelo qual existem todas as coisas, e por ele nós também." - Paulo - 1 Coríntios 8:6
    [MSN] [ICQ]
    Dayvson Clauber
    JavaBaby
    [Avatar]

    Membro desde: 04/09/2002 17:04:35
    Mensagens: 82
    Offline

    Ae pessoal ainda to com esse problema, Aproveitando toda essa confusao.. eu gostaria de saber se alguem aqui pode me indicar uma ferramenta onde eu possa extrair algum .txt da vida de um .gdb
    Estou precisando disso de forma urgentissima...
    [MSN] [ICQ]
    Dayvson Clauber
    JavaBaby
    [Avatar]

    Membro desde: 04/09/2002 17:04:35
    Mensagens: 82
    Offline

    Ae pessoal ainda to com esse problema, Aproveitando toda essa confusao.. eu gostaria de saber se alguem aqui pode me indicar uma ferramenta onde eu possa extrair algum .txt da vida de um .gdb
    Estou precisando disso de forma urgentissima...
    E eu nao sabia que era tao ruim de migrar as coisas do delphi 5 pro 6..viji...
    [MSN] [ICQ]
    rfpsatin
    JavaTeenager

    Membro desde: 29/04/2003 11:44:02
    Mensagens: 199
    Offline

    da uma olhada em
    www.clubedelphi.com.br
    www.firebase.com.br

    "todavia para nós há um só Deus, o Pai, de quem são todas as coisas e para quem nós vivemos; e um só Senhor,
    Jesus Cristo, pelo qual existem todas as coisas, e por ele nós também." - Paulo - 1 Coríntios 8:6
    [MSN] [ICQ]
    rfpsatin
    JavaTeenager

    Membro desde: 29/04/2003 11:44:02
    Mensagens: 199
    Offline

    Voltando ao delete, até onde sei o interbase não tem nenhuma clausula q vc possa usar. O oracle tem o rowid q permite isso agora o IB nao tem , q eu saiba.

    agora, vc pode usar uma stored procedure p/ fazer isso.

    faz nela um select, joga os dados em variaveis, abaixo vc mata os repetidos q vc armazenou acima e depois vc grava eles, 1 só x.

    tudo numa storedprocedure só

    "todavia para nós há um só Deus, o Pai, de quem são todas as coisas e para quem nós vivemos; e um só Senhor,
    Jesus Cristo, pelo qual existem todas as coisas, e por ele nós também." - Paulo - 1 Coríntios 8:6
    [MSN] [ICQ]
    wagnerps
    JavaChild
    [Avatar]

    Membro desde: 16/05/2003 08:12:22
    Mensagens: 109
    Localização: Sumaré - SP
    Offline

    como o rfpsatin falou
    no seu gdb cria uma nova tabela

    ai vc faz assim



    Espero que ajude.
    [MSN]
     
    Índice dos Fóruns » Assuntos gerais (Off-topic)
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team