Helio13 Posted July 26, 2012 at 04:41 PM Report Share #470462 Posted July 26, 2012 at 04:41 PM Boa tarde! Estou com um problema, e queria saber se alguém me poderia ajudar..!? Queria fazer um procedimento em que faço o Join de duas tabelas (uma temporária e outra definitiva) e compare o mesmo atributo das duas tabelas. Se os dados do atributo comparado como Join for igual não mantêm o esse registo na tabela temporária, senão for igual copia esse registo para a tabela definitiva... Estou a tentar com este procedimento, mas não estou a conseguir DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `Join2`() BEGIN -- Definição de variáveis utilizadas no Procedimento Declare CODIGO_INVENTARIO varchar(255); Declare sitio, TIPO_ACHADO, CATEGORIA_ACH, MATERIA_PRIMA_ACH, NIVEL_ARTIFICIAL, CAMADA, QUADRADO, ORIENTACAO, INCLINACAO, DEPOSITO varchar(45); Declare CONSOLIDACAO, RESTAURO, MOLDAGEM_REPLICA, ANALISE varchar(45); Declare DESCRICAO, OBSERVACOES varchar(255); Declare ANO, XN, YN, ZN,C_cm,L_cm,E_cm,A_cm,D_cm,CAIXA,CONTENTOR,PRATELEIRA int(11); Declare s1 int default 0; -- Definição do cursor Declare c1 cursor for( Select sip2.temp_teste.sitio from sip2.temp_teste inner join sip2.teste on sip2.temp_teste.sitio = sip2.teste.sitio); -- Definição da variável de controle de looping do cursor Declare continue HANDLER for not found SET s1 = 1; -- Abre o cursor OPEN c1; Repeat Fetch c1 into sitio; if s1 = 0 then INSERT INTO sip2.teste (CODIGO_INVENTARIO, sitio,TIPO_ACHADO,CATEGORIA_ACH,MATERIA_PRIMA_ACH,DESCRICAO,ANO,NIVEL_ARTIFICIAL,CAMADA,QUADRADO,XN,YN,ZN,ORIENTACAO,INCLINACAO,DEPOSITO,C_cm,L_cm,E_cm,A_cm,D_cm,CONSOLIDACAO,RESTAURO,MOLDAGEM_REPLICA,ANALISE,CAIXA,CONTENTOR,PRATELEIRA,OBSERVACOES) SELECT * FROM sip2.temp_teste; end if; until s1 = 1 end repeat; Close c1; END Alguém me pode dar uma ajuda?? Obrigado Cumprimentos Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 26, 2012 at 05:22 PM Report Share #470466 Posted July 26, 2012 at 05:22 PM porque fazes isso num procedimento ??? de certeza que não dá para fazer com um simples delete ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 26, 2012 at 05:43 PM Author Report Share #470468 Posted July 26, 2012 at 05:43 PM Queria mesmo fazer isto num procedimento, para fazer o Join das tabelas para comparar quais os registos iguais... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 26, 2012 at 06:01 PM Report Share #470475 Posted July 26, 2012 at 06:01 PM SQL para saber os registos com campos iguais SELECT tabela1.* FROM tabela1, tabela2 WHERE tabela1.campoX = tabela2.campoY desta forma tens os registos da tabela1 em que o campoX da sua tabela é igual ao campoY da tabelaY ... não percebo porque queres complicar ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 27, 2012 at 08:46 PM Author Report Share #470684 Posted July 27, 2012 at 08:46 PM Sim ok, eu entendo...mas agora como consigo fazer que os registos que estão iguais nas duas tabelas fiquem na tabela temporária e os outros que não existem na tabela definitiva os passe da tabela temporária para a definitiva?? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 27, 2012 at 10:00 PM Report Share #470694 Posted July 27, 2012 at 10:00 PM epa ... muito muito que lei o que escreveste não consigo perceber o que pretendes .... consegues fazer post das estruturas das duas tabelas e dar um exemplo ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 27, 2012 at 10:37 PM Author Report Share #470703 Posted July 27, 2012 at 10:37 PM Vou tentar explicar melhor. Eu estou a transferir dados do access para o mysql Mas antes de inserir esses dados da tabela definitiva, mando os dados primeiro para uma tabela temporária... O que quero depois fazer é: Comparar a tabela temporária com a tabela definitiva Mas quero comparar um atributo que é a chave primária...caso já existas dados na tabela definitiva com a mesma chave primária que existe no tabela temporária, não passa esse registo para a tabela definitiva, caso não exista transfere esse registo Concluindo, transferido da tabela temporária para a tabela definitiva os registos que não tenham chaves primárias iguais nas duas tabelas... Fiz me entender? Por isso é que queria fazer com um procedimento...mas tinha que usar cursores e o join das tabelas Em que ia percorrendo as linhas das tabelas e comparando a chave primária...se houver igual não nada, senão houver passa o registo... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 27, 2012 at 10:50 PM Report Share #470707 Posted July 27, 2012 at 10:50 PM estás a usar uma aplicação normal para ler os dados do access e enviar-los para o servidor MySQL ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 27, 2012 at 11:04 PM Author Report Share #470714 Posted July 27, 2012 at 11:04 PM Sim, isso esta tudo ok com a transferencia dos dados do access para o mysql, estou a fazer uma conexão ODBC e esta ok. Vou tentar dar um exemplo Tenho esta tabela definitiva: http://www.picture2life.com/Pictures/Open/16960740 E tenho esta temporária: http://www.picture2life.com/Pictures/Open/16960726 Quero entao comprar entao as duas tabelas e ver se há alguma codigo de inventário igual entre as duas tabelas, senão houver passo os dados, caso haja nao passo o registo da tabela temporária para a definitiva... Neste caso ia passar todos pois não ha nenhum codigo de inventario igual na tabela definitiva... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 28, 2012 at 12:25 AM Report Share #470744 Posted July 28, 2012 at 12:25 AM como pensava ... estas a complicar o que é simples ... fazes assim : 1º fazes um pedido à base de dados de origem por todos os registos da tabela que pretendes 2º para cada registo lida do tabela origem 3º guardas o valor do campo identificador 4º fazes um pedido na tabela destino por um registo com o campo identificador igual ao guardado 5º se o pedido devolveu uma lista vazia 6º insere o registo da tabela origem na tabela destino podes fazer isto em código da tua aplicação muito facilmente sem complicares ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 28, 2012 at 05:05 PM Author Report Share #470797 Posted July 28, 2012 at 05:05 PM Sim, percebi o que queres dizer... Mas quero fazer com um procedimento para que seja isto feito na parte do servidor e não na minha aplicação...seja tudo feito já no servidor e só tenho que invocar o procedimento na minha aplicação... Fiz me entender? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 28, 2012 at 09:21 PM Report Share #470815 Posted July 28, 2012 at 09:21 PM então como tens o servidor MySQL a ler as tabelas do access ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 28, 2012 at 09:35 PM Author Report Share #470817 Posted July 28, 2012 at 09:35 PM Através de uma conexão ODBC faço o exporte dos dados das tabelas do access para as tabelas do mysql Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 28, 2012 at 09:43 PM Report Share #470818 Posted July 28, 2012 at 09:43 PM Através de uma conexão ODBC faço o exporte dos dados das tabelas do access para as tabelas do mysql com a tua aplicação ... logo não é tudo executado pelo servidor Mas quero fazer com um procedimento para que seja isto feito na parte do servidor e não na minha aplicação...seja tudo feito já no servidor e só tenho que invocar o procedimento na minha aplicação... na minha opinião estás a complicar o que é simples ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Helio13 Posted July 28, 2012 at 10:05 PM Author Report Share #470824 Posted July 28, 2012 at 10:05 PM Se vou por o access a fazer esse trabalho ele vai bloquear, mais ainda do que bloquei...pois estou a fazer tratamento de muitos dados. Logo queria que essa parte fosse feita no servidor, visto que as duas tabelas a serem tratadas estão no servidor... Consegues me ajudar no execução do procedimento? O que acho que estou a fazer mal é a parte do cursor ou assim...mas não sei bem... Link to comment Share on other sites More sharing options...
Helio13 Posted July 29, 2012 at 12:58 PM Author Report Share #470849 Posted July 29, 2012 at 12:58 PM Obrigado pela ajuda, já consegui fazer o que queria...e não utilizei cursores...fui só por selects Cumprimentos Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now