Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

3l3tr1c

[Resolvido] Montando um enorme Select

Recommended Posts

Olá!

 

 

Gostaria, por gentileza, que alguém com mais experiência me desse algumas dicas de como proceder na seguinte situação, p. ex.: tenho um portal de comércio digital, onde toda empresa cadastrada no portal tem o seu PRÓPRIO Banco de Dados, se forem 100 empresas, serão 100 Bancos de Dados. As tabelas de todos os Bancos de Dados são IGUAIS, exemplo: em todos os bancos de dados há a tabela PRODUTOS, COTAÇÃO etc. E diante dessa situação eu queria montar um Select para mostrar os produtos de TODOS os clientes do portal. Mas, o problema é: como eu montarei um Select com mais de 100 bd, ou 1000 bancos de dados de uma só vez?? Colocarei no Select 1000 banco de dados? E para esclarecer ainda mais digo que o Select seria para exibir os PRODUTOS cadastrados por cada empresa e que estão dentro de seus próprios bancos de dados na tabela PRODUTOS, também. Fiz há um certo tempo algumas perguntas parecidas e nunca obtive respostas que pudessem sanar a questão. Apenas respostas genéricas e sem vínculo direto com a questão. Agradeço com antecipação aos colaboradores. Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer em programaçao um while q da show database e show tables, e o while monta o select pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer em programaçao um while q da show database e show tables, e o while monta o select pra você.

 

Valeu Giesta!

 

Se assim for, terei que fazer por laço, mas o que você acha do tempo de resposta? Poderia dar-me alguma ideia para optimizar o tempo de resposta? Afinal, serão dezenas de bancos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

em vez de montar um mega-select q empilha varias tabelas seria melhor um select q fosse dando insert numa tabela qualquer e depois você dava um select simples nessa tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Giesta!

 

Você diz criar uma tabela que contenha um campo para o BD e um campo para digitar o nome das tabelas e depois montar o select a partir dessa tabela que contém os dados gerais?

 

Valeu Giesta!

 

Você diz criar uma tabela que contenha um campo para o BD e um campo para digitar o nome das tabelas e depois montar o select a partir dessa tabela que contém os dados gerais?

 

Será que é assim que se faz? Estou com medo do tempo de resposta desse "trambolho".

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao , nada disso....

 

em vez de você fazer um while cujo resultado sql seja:

Select * from taba
UNION ALL
Select * from tabb
UNION ALL
Select * from tabc
UNION ALL
Select * from tabd
UNION ALL
Select * from tabe
...

seria melhor um while

while x {  insert into a select * from $taba }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vejo duas soluções :

 

1) Uma tabela única que teria uma replicação dos produtos a serem publicados, pois creio que não serão exibidos TODOS os produtos de TODOS os clientes, talvez uma coluna no banco do cliente para indicar os produtos a serem publicados, uma aplicação faria esta replicação.Nesta tabela replicada seria preciso uma coluna para identificar os produtos de cada cliente.Uma questão, existem possíveis concorrentes ? Ex : Cliente 001 anuncia um mesmo produto mais barato que outros clientes ??

 

2) Uma view que juntasse TODAS as tabelas de TODOS os clientes, aqui como não conheço nem MySql nem como foi montada a instalação aí não sei dizer se seria boa a performance disto.Uma aplicação que lendo o dicionário de metadados poderia manter esta view atualizada quando um novo banco(novo cliente) for incluído na base geral.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está era minha dúvida a VIEW seria uma carroça ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Motta e Giesta, mais uma vez. Motta, a primeira sugestão não seria possível porque serão exibidos todos os produtos de cada clientes, em uma busca por exemplo. Giesta, não sabia do "UNION ALL", era essa uma das maiores dúvidas. Como juntar todos os registros para exibí-los de uma só vez. A partir dessa união seria gerado um "ID" diferente para cada registro? No mais, estarei tentando fazer e mais uma vez agradeço as sugestões de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para criar o ID você precisaria criar uma tabela nova com pk auto_increment e ir inserindo as tabelas, seja por um while q gera um monster-sql ou tabela a tabela (q com certeza eh mais rapido)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Depois de esclarecidas as dúvidas começarei a desenvolver. Muito obrigado por sua ajuda Giesta. Boa sorte e até a próxima!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.