Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

06-08-2012 23:58

Boa noite, estou tendo dificuldades em fazer um comparação de tabelas, preciso comparar duas tabelas a partir do campo cpf, só que não em forma de pesquisa, porque tem aproximadamente 1000 cpf para serem conferidos, tipo todos de uma vez, exemplo:
tabela_siape
cpf - 71401686468
nome – Anderson Jose
cargo - Assistente
tabela_sirhu
cpf - 71401686468
nome – Anderson Ribeiro
cargo - Gerente
tenho fazer a conferência pra saber se as informações das duas tabelas batem e mostrar onde tem diferença.
Desde já agradeço.
Obrigado.
:) :rock:

MOVIDO PARA MYSQL
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

07-08-2012 13:16

Acho que você pode exibir somente os que são diferente alguma das colunas. Ou mostrar todos, pegando a diferença.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

07-08-2012 13:36

Sim acho que já me ajudaria muito, pode me ajudar?
:rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

07-08-2012 15:04

Essa query do link é mostrada para retornar as linhas que tem campos iguais.
Consulta-com-comparacao-em-2-tabelas_33_783.html

Para diferentes, só trocar o símbolo na consulta ( != )
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

08-08-2012 21:49

Legal já me ajudou na primeira parte em localizar o campo id igual, mais ainda preciso fazer a comparação com o restante da linha, as minhas tabelas têm mais ou menos 1200 nomes, alguns destas linhas sofrem alterações, cada tabela e retirada de um sistema diferente que não conversam entre si, um deles e da rede serpro:
tabela_serpro

Cpf Nome Cargo
123.456.789-11 Anderson assistente
111.222.333-44 Raimundo gerente
tabela_sirhu

Cpf Nome Cargo
123.456.789-11 Anderson assistente
111.222.333-44 Raimundo auxiliar
Erro:
111.222.333-44 Raimundo Auxiliar - gerente
eu recebo uma tabela do Serpro, a outra e minha, então tenho que comparar se o cpf de uma pessoa possui as mesmas informações nas 2 tabelas.
Espero ter sido mais claro agora para facilitar a ajuda.
Obrigado. :)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

08-08-2012 22:08

O que acho que dá para fazer é o esquema que indiquei. Nesse caso de comparação, a query vai consultar as colunas das duas tabela, verificando as colunas que possuem cpf igual, e o cargo diferente, por exemplo. Essa query vai retornar o campo com a diferença.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

08-08-2012 22:54

Mas a possibilidade de retornar somente as linhas que tiverem diferença no campo exemplo cargo, pois são 1200, porque muitos terão os dados compativeis, eu preciso achar os que tem divegência em algum campo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

09-08-2012 07:59

Então, baseado na query que indiquei, ficaria assim mais ou menos

SELECT * FROM tabela1, tabela2 WHERE tabela1.cpf=tabela2.cpf AND tabela1.cargo!=tabela2.cargo

Ai é comparado a linha que tenha cpf iguais nas duas tabelas, e ao mesmo tempo cargo diferente.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

09-08-2012 16:37

Muito obrigado, valeu!! :rock:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

09-08-2012 17:00

;)
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

09-08-2012 17:22

Vou chatear mais um pouco, como para comparar mais uma coluna, eu acrescento:

SELECT * FROM tabela1, tabela2 WHERE tabela1.cpf=tabela2.cpf AND tabela1.cargo!=tabela2.cargo AND tabela1.nome!=tabela2.nome

Obrigado.

:)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

09-08-2012 17:25

Isso mesmo.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

09-08-2012 17:37

Ta retornando vazio, os codigos e banco:

-- phpMyAdmin SQL Dump -- version 3.4.5 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tempo de Geração: 09/08/2012 às 22h32min -- Versão do Servidor: 5.5.16 -- Versão do PHP: 5.3.8 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Banco de Dados: `bancodedados` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `tabela1` -- CREATE TABLE IF NOT EXISTS `tabela1` ( `id` int(10) NOT NULL AUTO_INCREMENT, `cor` varchar(10) NOT NULL, `nome` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Extraindo dados da tabela `tabela1` -- INSERT INTO `tabela1` (`id`, `cor`, `nome`) VALUES (1, 'vermelho', 'teste'), (2, 'azul', 'igual'), (3, 'vermelho', ''), (4, 'verde', ''); -- -------------------------------------------------------- -- -- Estrutura da tabela `tabela2` -- CREATE TABLE IF NOT EXISTS `tabela2` ( `id` int(10) NOT NULL AUTO_INCREMENT, `cor2` varchar(10) NOT NULL, `nome2` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; -- -- Extraindo dados da tabela `tabela2` -- INSERT INTO `tabela2` (`id`, `cor2`, `nome2`) VALUES (1, 'vermelho', 'anderson'), (2, 'azul', 'igual'), (3, 'modelo3', ''), (4, 'modelo4', ''); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

comparacao.php

<?php $conexao = mysql_connect("localhost", "root", "") or die(mysql_error()); $db = mysql_select_db("bancodedados"); ?> <?php $selec = "SELECT * FROM tabela1, tabela2 WHERE tabela1.id=tabela2.id AND tabela1.cor!=tabela2.cor2 AND tabela1.nome!=tabela2.nome2"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); $total = mysql_num_rows($exec); ?> <table border="1"> <tr> <td align="center">id</td> <td align="center">cor</td> <td align="center">cor2</td> <td align="center">nome</td> <td align="center">nome2</td> </tr> <?php while($campos=mysql_fetch_array($exec)) { extract($campos); echo "<tr> <td>$id</td><td>$cor</td><td>$cor2</td><td>$nome</td><td>$nome2</td> </tr>"; } ?> </table> <?php echo "total de $total dado(s)."; mysql_close($conexao); ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

09-08-2012 17:52

Observando a query

SELECT * FROM tabela1, tabela2 WHERE tabela1.id=tabela2.id AND tabela1.cor!=tabela2.cor2 AND tabela1.nome!=tabela2.nome2

O where vai passar ok, já que vai comparar o mesmo id em ambas as tabelas.
Já o primeiro and, você pedi que a query retorne somente as cores que forem diferentes em ambas a colunas. O que acontece é que no seu bd as cores são as mesmas. Se você mudar alguma cor em uma das linhas, já vai retornar resultado, isso para

SELECT * FROM tabela1, tabela2 WHERE tabela1.id=tabela2.id AND tabela1.cor!=tabela2.cor2

A coluna nome segue o mesmo critério da coluna cor.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 8
Sexo: Masculino

Comparação de tabelas a partir de um campo

13-08-2012 11:11

Bom dia, consegui resolver assim:
$selec = "SELECT * FROM tabela1, tabela2 WHERE tabela1.id=tabela2.id AND tabela1.cor!=tabela2.cor2 OR tabela1.id=tabela2.id AND tabela1.nome!=tabela2.nome2";

Muito obrigado!!! :thumbsup: :clap:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17685
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Comparação de tabelas a partir de um campo

13-08-2012 12:48

Boa.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado