Ir para conteúdo

POWERED BY:

Arquivado

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

horacio2009

Desafio...rsrs

Recommended Posts

Bom dia pessoal...to com um problema legal desta vez...

é o seguinte:teho 2 query sendo que na primeira eu tenho que descobrir as somas de debitos, assim como os operadores que ficaram devendo.

executo a query numa boa, através de sum ('valor') as soma_prejuizo e group by relacao( que se refere aos operadores)

ai tenho como resultado:

soma_prejuizo relacao

45990 09

239909 120

45678 76

aí, está certo, eu sei que operador 09 deve 45990, e por aí, vai...

agora a segunda query é que tá me derrubando , pois preciso subtrair(caso exista débitos) os valores acima, de cada operador, aí agrupar por nome(fácil) e colocar em ordem de saldo, ou seja, se ninguém mais deve, esses 3 acima ficarão lá em baixo...

como faço isso, pessoal???

obrigado a todos!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

aí vai... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

obrigado!

obs.: é só nessa tabela a pesquisa, porém, são duas pesquisas....

 

 

 

 

CREATE TABLE IF NOT EXISTS `controle_clientes` (

`id_vendas` int(11) NOT NULL AUTO_INCREMENT,

`boleto_pago` int(11) NOT NULL,

`usuario` varchar(200) COLLATE latin1_general_ci NOT NULL,

`relacao` varchar(200) COLLATE latin1_general_ci NOT NULL,

`contrato` int(11) NOT NULL,

`cidade` varchar(200) COLLATE latin1_general_ci NOT NULL,

`bairro` varchar(200) COLLATE latin1_general_ci NOT NULL,

`vendedor` varchar(200) COLLATE latin1_general_ci NOT NULL,

`nome` varchar(200) COLLATE latin1_general_ci NOT NULL,

`grupo` int(11) NOT NULL,

`cota` int(11) NOT NULL,

`nascimento` varchar(200) COLLATE latin1_general_ci NOT NULL,

`cpf` varchar(200) COLLATE latin1_general_ci NOT NULL,

`cnpj` varchar(20) COLLATE latin1_general_ci NOT NULL,

`rg` varchar(200) COLLATE latin1_general_ci NOT NULL,

`data_dig` varchar(200) COLLATE latin1_general_ci NOT NULL,

`telefone1` varchar(200) COLLATE latin1_general_ci NOT NULL,

`telefone2` varchar(200) COLLATE latin1_general_ci NOT NULL,

`nome_empresa` varchar(250) COLLATE latin1_general_ci NOT NULL,

`valor` decimal(10,2) NOT NULL,

`produto` varchar(200) COLLATE latin1_general_ci NOT NULL,

`prazo` int(11) NOT NULL,

`email` varchar(200) COLLATE latin1_general_ci NOT NULL,

`NUM` int(11) NOT NULL,

`endereco` varchar(200) COLLATE latin1_general_ci NOT NULL,

`cep` varchar(200) COLLATE latin1_general_ci NOT NULL,

`sorteio` varchar(200) COLLATE latin1_general_ci NOT NULL,

`mostra` char(1) COLLATE latin1_general_ci NOT NULL,

`proposta` int(11) NOT NULL,

`dia_dig` int(11) NOT NULL,

`mes_dig` int(11) NOT NULL,

`ano_dig` int(11) NOT NULL,

`vendedor_codigo` varchar(200) COLLATE latin1_general_ci NOT NULL,

`mostra_vendas` int(11) NOT NULL DEFAULT '1',

`rk` varchar(200) COLLATE latin1_general_ci NOT NULL,

`dia_envio` int(11) NOT NULL,

`mes_envio` int(11) NOT NULL,

`ano_envio` int(11) NOT NULL,

`numeros_sorteio` text COLLATE latin1_general_ci NOT NULL,

`etapa` varchar(200) COLLATE latin1_general_ci NOT NULL,

`comentario` text COLLATE latin1_general_ci NOT NULL,

`estado` varchar(200) COLLATE latin1_general_ci NOT NULL,

`data_sorteio` varchar(200) COLLATE latin1_general_ci NOT NULL,

`dia_assembleia` int(11) NOT NULL,

`mes_assembleia` int(11) NOT NULL,

`ano_assembleia` int(11) NOT NULL,

`sexo` char(12) COLLATE latin1_general_ci NOT NULL,

`estado_civil` char(12) COLLATE latin1_general_ci NOT NULL,

`profissao` varchar(250) COLLATE latin1_general_ci NOT NULL,

`dia_nasc` int(11) NOT NULL,

`mes_nasc` int(11) NOT NULL,

`ano_nasc` int(11) NOT NULL,

`parcela` int(11) NOT NULL,

`ativo` varchar(250) COLLATE latin1_general_ci NOT NULL,

`excluido` int(11) NOT NULL,

`obs_boleto` varchar(250) COLLATE latin1_general_ci NOT NULL,

`1` varchar(250) COLLATE latin1_general_ci NOT NULL,

`2` varchar(250) COLLATE latin1_general_ci NOT NULL,

`3` varchar(250) COLLATE latin1_general_ci NOT NULL,

`4` varchar(250) COLLATE latin1_general_ci NOT NULL,

`origem` varchar(250) COLLATE latin1_general_ci NOT NULL,

`codigo` varchar(250) COLLATE latin1_general_ci NOT NULL,

`pago` int(11) NOT NULL,

`comentario_parcela` text COLLATE latin1_general_ci NOT NULL,

`pgto` char(1) COLLATE latin1_general_ci NOT NULL,

`enviado` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,

`representante` varchar(250) COLLATE latin1_general_ci NOT NULL,

`renda` decimal(10,2) NOT NULL,

`mostrar` varchar(2) COLLATE latin1_general_ci NOT NULL DEFAULT 's',

`marca` int(11) NOT NULL,

`insercao` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`num_assembleia` int(11) NOT NULL,

`status` int(11) NOT NULL DEFAULT '0',

`formacao` int(11) NOT NULL DEFAULT '0',

`debito` decimal(10,3) NOT NULL,

`situacao` int(11) NOT NULL DEFAULT '0',

`comunicacao` varchar(250) COLLATE latin1_general_ci NOT NULL DEFAULT '0',

`assembleia` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`atualizacao` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`acompanhamento` int(11) NOT NULL DEFAULT '0',

`data_pagamento` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`totalizados` int(11) NOT NULL DEFAULT '0',

`cancelados` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`id_vendas`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2511 ;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

super-tabelao-de-guerra vs. normalizaçao , o duelo do seculo !

Tem de tudo aih, data varchar, campo pra dia, campo pra mes, campo pra ano :P

 

 

aparentemente,basta na hora de você ordernar dar

 

order by sum(valor) asc

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, eu somo pelo valor e ordeno por ASC, até aí, tudo bem...só que depois disso, eu tenho que pegar as datas de (campo)cancelados em determinado periodo, pegar o valor desses registros( que será carregad como soma_prejuizo) através do sum, descobrir quanto deve e quem é o operador(relação) agrupar pelos operadores para saber o debito de cada um, daí, depois disso, subratrair da soma(do total do mes, aí, é o credito mesmo)esse valor "soma_prejuizo" tem que me retornar a diferença credito/prejuizo de cada operador, aí, ordenar pelo crédito...

entendeu?

eui, sobre a tabela, ela está tão grande assim???como poderia fazer para melhorar isso???

Valeu a força Giesta!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinceramente , e sem querer humilhar (pq tem mta gente do forum dizendo q eu sou grosso), sua tabela esta um lixo, deveria ser refeita usando os campos adequados para cada informaçao e de forma padronizada e sem 'resumos' na propria tabela

 

e sinceramente nao entendi o q você quer fazer, mas pelo visto exige uma query com subquery com junçao na propria tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, Giesta...é exatamente isso que eu quero..sei dessa subquery, mas não sei como organizar/re-calcular isso ...a primeira qurey, eu indico quem e quanto devo...mas a segunda, ultiliza calculo relacionado ao operador...subtrair o total de debito daquele operador e depois, organizar pela diferença...como faço esses calculos?

Motta.vou dar uma olhada ni link! obrigado!

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.