Jump to content

Archived

This topic is now archived and is closed to further replies.

Leandro O. Alves

[Resolvido] Selecionar todo o Banco de dados

Recommended Posts

Como Selecionar todo o Banco de Dados MySQL e selecinar uma coluna especifica de cada um.

Quero vazer uma auto soma de uma coluna que existe em todas as tabelas. abaixo vai o

	$busca = mysql_connect("$local","$usuario","$senha") or die("ERRO AO CONECTAR AO MYSQL, VERIFIQUE COM O ADMINISTRADOR" . mysql_error());
mysql_select_db("$banco") or die("BASE DE DADOS INVÁLIDO");
$pesquisa = mysql_query("SELECT sum(pedn$OPCAO) FROM show tables  data BETWEEN '$data1' AND '$data2'   ");
while($sum = mysql_fetch_array($pesquisa)){
$soma = $sum["sum(pedn$OPCAO)"];

}

 

Com show tables não funciona, eu nem sei isso pode ser feito, mais desde já agradeço.

Share this post


Link to post
Share on other sites

Boa tarde amigo,

 

Olha, não acredito que seja possível fazer o que você quer sem ser com uma FUNCTION ou então via programação mesmo no PHP ficaria mais simples.

 

Pra obter o nome das tabelas do banco use:

 

SELECT table_name FROM information_schema.tables WHERE table_schema = 'seu_banco'

Aí esses SELECT retornará as tabelas e você pode fazer um looping pra ler cada uma e fazer o SELECT que tu quer.

 

Meio complicadinho fazer direto num SELECT só eu acho. Talvez alguém conheça a maneira e possa te ajudar melhor.

 

Fico a disposição, abraço.

Share this post


Link to post
Share on other sites

Obrigado pela resposta, estou empacado com esse codigo, sem isso não da para dar continuidade no codigo. Eu podia criar outra tabela para soma total, mais não iria conseguir modificar as informções. Mas agradeço a resposta.

Share this post


Link to post
Share on other sites

Entendo.

 

Tente fazer como sugeri, via PHP ficaria mais fácil ler cada tabela e dar o SELECT em cada uma. Se descobrir uma maneira de fazer direto seria muito interessante, poste-a para compartilhar :D

Share this post


Link to post
Share on other sites

O problema e que toda hora, que cria um usuario, cria uma tabela correspondente ao usuario, para funciorar do jeito que você me sugeriu eu teria que ficar modificando o codigo manualmente toda hora que for cadastrado um usuario. Continuo na luta, rsrs. Obrigado

Share this post


Link to post
Share on other sites

O problema e que toda hora, que cria um usuario, cria uma tabela correspondente ao usuario, para funciorar do jeito que você me sugeriu eu teria que ficar modificando o codigo manualmente toda hora que for cadastrado um usuario. Continuo na luta, rsrs. Obrigado

Por que? O SELECT que eu te passei vai retornar o nome de todas as tabelas.

 

Se uma tabela for criada, ela será colocada nessa lista automaticamente.

Share this post


Link to post
Share on other sites

Por que? O SELECT que eu te passei vai retornar o nome de todas as tabelas.

 

Se uma tabela for criada, ela será colocada nessa lista automaticamente.

Eu entendi o que você sugeriu, mais eu tenho que selecionar uma coluna especifica de cada tabela. Ai e que ta o problema. Eu tenho que selecionar a coluna e depois fazer uma auto somo com o valor encontrado. tipo assim faturamento total de todos os "usuarios".

Share this post


Link to post
Share on other sites

Entendi, a coluna não tem o mesmo nome em todas as tabelas então? Eu tinha achado que ela tinha o mesmo nome em todas.

 

Sendo assim não tem como fazer uma coisa dinâmica pra todas as tabelas mesmo, tu vai ter que fazer específico pra cada uma.

Share this post


Link to post
Share on other sites

Entendi, a coluna não tem o mesmo nome em todas as tabelas então? Eu tinha achado que ela tinha o mesmo nome em todas.

 

Sendo assim não tem como fazer uma coisa dinâmica pra todas as tabelas mesmo, tu vai ter que fazer específico pra cada uma.

Nao tem sim. Ex.: proposta1, proposta2 e assim por diante essas são as tabelas. Elas contem as mesmas colunas, com informções diferentes, eu tenho que pegar informaçoes de duas colunas vou passar o codigo abaixo

$busca = mysql_connect("$local","$usuario","$senha") or die("ERRO AO CONECTAR AO MYSQL, VERIFIQUE COM O ADMINISTRADOR" . mysql_error());
mysql_select_db("$banco") or die("BASE DE DADOS INVÁLIDO");
$pesquisa = mysql_query("SELECT sum(pedn$OPCAO) FROM proposta$nome_tabela WHERE data BETWEEN '$data1' AND '$data2'   ");
while($sum = mysql_fetch_array($pesquisa)){
$soma = $sum["sum(pedn$OPCAO)"];

}

deste jeito eu estou selecionando uma tabela por vez, ate ai tudo bem mais eu vou precisar selecionar todas as tabelas de uma so vez, para ver a produção dos usuarios.

Segue abaixo o link do exemplo que estou montando, esta todo "tosco" e so para teste, use codigo "dbella".http://dbellacred.com.br/bancoasdf.php

Share this post


Link to post
Share on other sites

Então cara, suponha que você tem N tabelas com a coluna valor que é a coluna que você quer somar (suposição).

 

Você faria 1 SELECT pra retornar o nome das tabelas do banco (aquele que eu passei lá em cima). Esse SELECT retornaria os N nomes, então você faz um while($tabela = mysql_fetch_array($resultado_do_select_das_tabelas)) e dentro desse looping executa algo parecido com SELECT SUM(valor) FROM $tabela WHERE condicoes.

 

Entende? Você vai ler cada tabela, o nome da mesma estará numa variável, executar o SELECT nelas e ir acumulando o valor.

 

Se a tua estrutura for essa que eu pensei e tu descreveu em que as tabelas tem o mesmo nome pras colunas então dará certo.

Share this post


Link to post
Share on other sites

Então cara, suponha que você tem N tabelas com a coluna valor que é a coluna que você quer somar (suposição).

 

Você faria 1 SELECT pra retornar o nome das tabelas do banco (aquele que eu passei lá em cima). Esse SELECT retornaria os N nomes, então você faz um while($tabela = mysql_fetch_array($resultado_do_select_das_tabelas)) e dentro desse looping executa algo parecido com SELECT SUM(valor) FROM $tabela WHERE condicoes.

 

Entende? Você vai ler cada tabela, o nome da mesma estará numa variável, executar o SELECT nelas e ir acumulando o valor.

 

Se a tua estrutura for essa que eu pensei e tu descreveu em que as tabelas tem o mesmo nome pras colunas então dará certo.

Pwo vlw agora eu entendi, peço desculpa ai e que não fiz curso nenhum, tudo que sei e so lendo e vendo post na net vlw ai brigadão.

Share this post


Link to post
Share on other sites

Cara tranquilo :D

 

A gente que não se entendeu mesmo, acontece.

 

Desenvolve ae e posta pra dizer se deu certo, abraço fico no aguardo.

Share this post


Link to post
Share on other sites

Cara tranquilo :D

 

A gente que não se entendeu mesmo, acontece.

 

Desenvolve ae e posta pra dizer se deu certo, abraço fico no aguardo.

Cara ve se ta certo ai eu entendi o que você falou mais não ta fluindo aqui não vou postar o code

    
$busca = mysql_connect("$local","$usuario","$senha") or die("ERRO AO CONECTAR AO MYSQL, VERIFIQUE COM O ADMINISTRADOR" . mysql_error());
mysql_select_db("$banco") or die("BASE DE DADOS INVÁLIDO");



$tabelaresultado = mysql_query(" SELECT table_name FROM information_schema.tables WHERE table_schema = 'meu banco de dados");
while($tabela = mysql_fetch_array($tabelaresultado))




$pesquisa = mysql_query("SELECT sum(pedn5) FROM $tabela WHERE data BETWEEN '01/08/2012' AND '30/08/2012'   ");
while($sum = mysql_fetch_array($$pesquisa)){
$soma = $sum["sum(pedn5)"];


}

 

Dei um echo em $tabela so ta aparecendo "Array"

Share this post


Link to post
Share on other sites

Você em que substituir o 'meu banco de dados' pelo nome do teu banco. No caso a variável $banco pelo jeito.

 

Aparece ''Array'' porque ele é um array assim como qualquer consulta que você faz no banco entende? Aí você tem que ver qual a coluna que tu quer dessa consulta. No nosso caso, só tem uma coluna, a do nome da tabela, então é o $tabela[0].

 

Dica: Quando você trabalhar com arrays use o print_r($var_do_array); para ver o que tem dentro dele =]

 

A disposição vai postando que a gente vai vendo :D

Share this post


Link to post
Share on other sites

Consegui fazer mais fica dando erro na linha da while "while($sum = mysql_fetch_array($pesquisa))". Agora ta listando e jogando certo mais não ta procedendo.Ai vai o code com as modificações

         $tabelaresultado = mysql_query(" SELECT table_name FROM information_schema.tables WHERE table_schema = 'dbellacredcombr'");
        while($tabela = mysql_fetch_array($tabelaresultado))



 	$pesquisa = mysql_query("SELECT sum(pedn5) FROM $tabela WHERE data BETWEEN '01/08/2012' AND '30/08/2012'   ");
while($sum = mysql_fetch_array($pesquisa)){
$soma = $sum["sum(pedn5)"];

 

Olha ai o erro "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ".

Fico no aguardo

Share this post


Link to post
Share on other sites

Bom dia amigo,

 

É que como eu disse, o $tabela receberá um array com o resultado do primeiro SELECT. Ou seja, $tabela é um array com apenas uma coluna.

 

Sendo assim no teu SELECT de baixo tu tem que indicar qual a coluna do array que deve ser usada, nesse caso a "table_name":

 

        $tabelaresultado = mysql_query(" SELECT table_name FROM information_schema.tables WHERE table_schema = 'dbellacredcombr'");
        while($tabela = mysql_fetch_array($tabelaresultado))

       // Note como adicionei o ["table_name"] na variável tabela abaixo, pra indicar a coluna, e depois usarei a variável $nome_tabela

       $nome_tabela = $tabela["table_name"];

       $pesquisa = mysql_query("SELECT sum(pedn5) FROM $nome_tabela WHERE data BETWEEN '01/08/2012' AND '30/08/2012'   ");
       while($sum = mysql_fetch_array($pesquisa)){
       $soma = $sum["sum(pedn5)"];

Acho que é isso aí, faça ajustes se forem necessários.

 

Qualquer dúvidas só postar, abraço.

Share this post


Link to post
Share on other sites

Tem valores nulos em alguma tabela? Se tiver adicione o seguinte no seu WHERE:

 

AND pedn5 IS NOT NULL

Não podemos somar valor com nulo. Ou seja o SUM só deve buscar registros com valores não-nulos.

 

Acho que deva ser isso.

Share this post


Link to post
Share on other sites

Beleza deu certo mais so com o pedn5, quando coloco para filtrar por data nao da valor tentei colocar IS NOT NULL AND NA DATA MAIS NÃO DEU CERTO COLOQUEI ASSIM VE DA CERTO "SELECT sum(pedn5) FROM $nome_tabela WHERE pedn5 IS NOT NULL AND data IS NOT NULL AND data BETWEEN '01/08/2012' AND '04/09/2012'". Tirando o filtro da data da beleza.

Share this post


Link to post
Share on other sites

Dá algum erro? Tem alguma informação entre essas datas?

 

Eu notei que você tem essa linha:

 

$soma = $sum["sum(pedn5)"];

 

Essa variável $soma não devia estar acumulando? Ou seja, não deveria ser $soma = $soma + $sum["sum(pedn5)"]; ? Pois da forma que está aí ele vai sobrescrever a variável a cada SELECT...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.