
=================================================================
Howto: Como realizar a busca em dois bancos distintos e unir o resultado em apenas um SQL?
=================================================================
Primeiro o problema:
Você precisa fazer uma busca em dois bancos de dados e mostrar o resultado em um lugar só, isso porque você tem partes dos dados em um banco e o restante dos dados em outro banco, e por motivo estrutural, burocrático… sabe-se lá porque…. você não pode unir tudo em um único database.
Solução:
Você pode unir dois resultados (inclusive de drivers/bancos que estejam na mesma conexão) em um unico result, mesclando os dados. Para isso deve-se utilizar a estrutura UNION.
Analisemos a seguinte query:
[sql]
SELECT cod, nome, idade FROM pessoas
SELECT codigo, nome_completo, idade FROM pessoas_nao_cadastradas
[/sql]
Primeiro, você deve ter resultados iguais para cada select, para isso use alias para igualar os resultados.
[sql]
SELECT cod, nome, idade FROM pessoas
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas
[/sql]
Agora, basta você usar o UNION entre os dois selects:
[sql]
SELECT cod, nome, idade FROM pessoas
UNION
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas
[/sql]
Já, agora você tem o resultado de dois bancos de dados mesclados em um só.
E como fazer um LIKE (WHERE)?
Você deve fazer um WHERE ou nos dois SELECTs ou fazer um SELECT que totaliza os dois:
[sql]
SELECT xyz.* FROM (
SELECT cod, nome, idade FROM pessoas
UNION
SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas
) xyz WHERE nome = ‘Paulo’
[/sql]