Consulta entre duas tabelas

9 respostas
jMarcel

Pessoal,
tenho duas tabelas:

TAB1    | TAB2
-----------------------
cod1    | cod2
nome1   | nome2
-----------------------

Infelizmente os códigos são totalmente diferentes.
A única relação que tenho são partes do nome (pelo menos uma palavra é igual). Por ex.:

TAB1            | TAB2
------------------------------------------------------
AB NOME CIA II  |  AB NOME COMPANHIA II
AB ABC XYZ      |  AB ABCD XYZW

Alguém sabe como fazer ?
obs.: to usando sqlserver2008

9 Respostas

Marlon_Meneses

cara…
assim fica dificil!
tem que haver algum tipo de relacionamento ou pelo menos cosistencia de dados
caso contrario nao se pode fazer nada

drsmachado
SELECT DISTINCT TAB1.col1, TAB1.col2, TAB2.col1, TAB2.col2 FROM TAB1 INNER JOIN TAB2 ON TAB1.col1 LIKE '%palavra%'  AND TAB2.col1 LIKE '%palavra%';

Não testei, mas deve ser algo assim

Marlon_Meneses

drsmachado:
SELECT DISTINCT TAB1.col1, TAB1.col2, TAB2.col1, TAB2.col2 FROM TAB1 INNER JOIN TAB2 ON TAB1.col1 LIKE '%palavra%' AND TAB2.col1 LIKE '%palavra%';

Não testei, mas deve ser algo assim

funcionaria, mas nao em todos os casos

drsmachado

TODA consulta com LIKE não funcionará em todos os casos pois a mesma traz coisas desnecessárias.
Se, por algum motivo, ele tiver mais de um registro contendo a palavra ‘SIM’ e esta for pesquisada, todas as tuplas serão retornadas.
Pior, se a consulta for feita somente pela letra ‘A’.

O correto seria que ele mantivesse a normalização do banco, fazendo com que houvesse um relacionamento explícito entre as tabelas.
Porém, nem sempre é possível. Se, por exemplo, ele estiver dando manutenção ou ampliando um sistema em operação?

jMarcel

É, eu tentei com o LIKE. Vou comparar os resultados e acertar os errados ‘na mão’…
Obrigado.

Marlon_Meneses

nesse caso a única saída é usar o like

drsmachado

But i said it since the begin…

jMarcel

Ah, só corrigindo:

SELECT DISTINCT TAB1.col1, TAB1.col2, TAB2.col1, TAB2.col2 FROM TAB1 INNER JOIN TAB2 ON TAB1.[color=red]col1[/color] LIKE ‘%palavra%’ AND TAB2.[color=red]col1[/color] LIKE ‘%palavra%’;

Onde está em vermelho vc quis dizer col2, já que col1 é int e as colunas que tem algum relacionamento são as col2.

jMarcel

Consegui outra tabela e agora meu problema ficou assim:

col1 = [color=blue]21415[/color]703298200
col2 = [color=blue]1863415[/color]703298246

Ou seja, a parte em azul sempre repete no início dos registros de ambas as colunas.
O texto (em comum) que quero comparar é o que está em negrito.

Alguém sabe ?

Criado 16 de junho de 2011
Ultima resposta 16 de jun. de 2011
Respostas 9
Participantes 3