Consulta SQL complexa[RESOLVIDO]

Ola pessoal!
Eu gostaria de uma ajuda de vcs em um select que eu preciso fazer. E o seguinte: tenho 9 tabelas que representam 9 unidades da empresa e contem colunas como nome do usuario, etc ; tenho outra tabela de usuarios que contem o nome do usuario e o centro de custo que ele pertence, esse centro de custo e composto de 3 numeros, ex:101, 709, 203, 450 … Desta forma eu queria fazer uma consulta onde eu informasse o primeiro caractere do centro de custo(que e o que determina o nome do centro de custo) e ele fizesse uma busca na tabela usuarios utilizando a clausula LIKE e os usuarios encontrados nesta condição seriam usados para uma consulta nas 9 tabelas das unidades. Na verdade seria a junção de dois selects: O primeiro select seria o da tabela usuarios:

SELECT * FROM USUARIOS WHERE CENTRO_CUSTO LIKE '1%%' que me retornaria todos os usuarios desta tabela que pertencem ao centro de custo 100 a 199, e o segundo select seria a consulta nas 9 tabelas das unidades:

SELECT * FROM base_bhz WHERE username = 'usuario' UNION (SELECT * FROM base_bsb WHERE username = 'usuario') ... onde o ‘usuario’ seria os usuarios encontrados no select dos usuarios feito. Devo colocar um loop ai para que pra cada usuario seja pesquisado nas 9 tabelas. Bom, eu comecei a fazer tentando declarar uma variavel e setando ela com a consulta do usuario e nao deu certo, fiz um monte de testes aqui e todos deram errado. Gostaria de uma ajuda pra fazer essa consulta, pois ainda nao consegui, e tambem nao tenho conhecimentos avançados de SQL. Peço que por favor me ajudem. Obrigado desde já!

Boa tarde

Tenta fazer como estava fazendo mesmo, faz a primeira query e depois faz uma union com a segunda, ou tenta fazer uma subquery e ligar pela PK.

Att.

deu certo aqui, fiz um select e no where eu coloquei a minha subconsulta, ai rodou. Valeu

Subselects são simples e claras, mas comumente problemas a nivel de performace. para averiguar a performace da sua sql use o comando

explain analyze
select * from tabela where …

no seu caso em particular eu recomendaria usar joins que performaticamente melhores.

SELECT * FROM USUARIOS U
INNER JOIN base_bsb BSP ON BSP.username = U.username
INNER JOIN base_bhz BHZ ON BHZ.username = U.username
...
WHERE CENTRO_CUSTO LIKE '1%'

** mas lembre-se time que ta ganhando não se mexe :wink: