Aqui onde estamos trabalhando (@rodrideme e @deninhu) precisamos fazer uma busca em dois bancos de dados e mostrar o resultado em um lugar só. Por que? Porque temos dois bancos de dados e em um ficarão os registros de quem já é registrado, e no outro quem ainda não é registrado, mas que pode vir a se registrar (mas isso é outra história).
Aqui nós estamos trabalhando com db2, mas o que irei mostrar é independente de banco.
Tá, para de enrolar e fala logo!
Você pode unir dois resultados (inclusive de drivers/bancos que estejam na mesma conexão) em um unico result, mesclando os dados. Para isso use a estrutura UNION.
Tome as seguintes queries:
1 2 3 | SELECT cod, nome, idade FROM pessoas SELECT codigo, nome_completo, idade FROM pessoas_nao_cadastradas |
Primeiro, você deve ter resultados iguais para cada select, para isso use alias para igualar os resultados.
1 2 3 | SELECT cod, nome, idade FROM pessoas SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas |
Agora, basta você usar o UNION entre os dois selects:
1 2 3 | SELECT cod, nome, idade FROM pessoas UNION SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas |
Pronto! Você tem o resultado de dois bancos de dados mesclados em um só.
Legal, mas como faço WHERE nisso?
Você deve fazer um where ou nos dois selects ou fazer um select que totaliza os dois (como eu gosto de fazer):
1 2 3 4 5 | SELECT z.* FROM ( SELECT cod, nome, idade FROM pessoas UNION SELECT codigo AS cod, nome_completo AS nome, idade FROM pessoas_nao_cadastradas ) z WHERE nome = 'Michael' |

