3l3tr1c 1 Denunciar post Postado Julho 23, 2010 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
giesta 29 Denunciar post Postado Julho 23, 2010 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
3l3tr1c 1 Denunciar post Postado Julho 24, 2010 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
giesta 29 Denunciar post Postado Julho 25, 2010 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
3l3tr1c 1 Denunciar post Postado Julho 27, 2010 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
giesta 29 Denunciar post Postado Julho 27, 2010 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
Motta 645 Denunciar post Postado Julho 28, 2010 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
giesta 29 Denunciar post Postado Julho 28, 2010 a procedure lendo o information_schema eh criavel, mas possivelmente nao eh viavel em tempo de resposta. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 28, 2010 Está era minha dúvida a VIEW seria uma carroça ... Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Julho 28, 2010 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
giesta 29 Denunciar post Postado Julho 28, 2010 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
3l3tr1c 1 Denunciar post Postado Julho 29, 2010 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