tiagocaus 1 Denunciar post Postado Dezembro 3, 2013 Boa noite. Tenho duas tabelas - financ_receita (Valores positivos de entrada) - financ_despesa (Valores negativos de saída) <?php mysql_select_db($database_conexao, $conexao); $query_rsAnoAtualEntrada = "SELECT ID_FinanE, SUM(valor) AS SomaEntradaAtual, data FROM financ_receita WHERE YEAR(data) = ".date("Y")." GROUP BY MONTH(data)"; $rsAnoAtualEntrada = mysql_query($query_rsAnoAtualEntrada, $conexao) or die(mysql_error()); $row_rsAnoAtualEntrada = mysql_fetch_assoc($rsAnoAtualEntrada); $totalRows_rsAnoAtualEntrada = mysql_num_rows($rsAnoAtualEntrada); ?> <?php mysql_select_db($database_conexao, $conexao); $query_rsAnoAtualSaida = "SELECT ID_FinanS, SUM(valor) AS SomaSaidaAtual, data FROM financ_despesa WHERE YEAR(data) = ".date("Y")." GROUP BY MONTH(data)"; $rsAnoAtualSaida = mysql_query($query_rsAnoAtualSaida, $conexao) or die(mysql_error()); $row_rsAnoAtualSaida = mysql_fetch_assoc($rsAnoAtualSaida); $totalRows_rsAnoAtualSaida = mysql_num_rows($rsAnoAtualSaida); ?> Estou fazendo o while. <?php do { ?> <?php } while ($row_rsAnoAtualEntrada = mysql_fetch_assoc($rsAnoAtualEntrada)); ?> Estou fazendo o select de todos os resultado do ano e agrupando pelos meses. Então se tiver vários valores do mesmo mês e ano, soma e mostra o valor da entrada. Até ai OK. Agora preciso mostrar também no mesmo while os valores de saída, pois acontece de mesmo mês não ter nenhum valor de entrada, mas já existir o de saída, como lançamento programado. É possível fazer? Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Dezembro 3, 2013 Olá tiago se possível, mande a estrutura das duas tabelas. Se for o caso faça uma union ou uma view Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Dezembro 3, 2013 Bom dia GCAS, seque minha tabela, deixei os mesmo valores de teste que estou usando. CREATE TABLE IF NOT EXISTS `financ_despesa` ( `ID_FinanS` int(255) NOT NULL AUTO_INCREMENT, `id_fornec` int(255) NOT NULL, `nome` varchar(255) NOT NULL, `planoDeConta` varchar(20) NOT NULL COMMENT 'Plano de conta', `valor` varchar(20) NOT NULL, `data` date NOT NULL, `transao` varchar(2) NOT NULL COMMENT '[SN] Saida Normal [TR]Transferencia', `numDocumento` varchar(100) DEFAULT NULL COMMENT 'Numero do documento caso exista.', `hora` varchar(8) DEFAULT NULL COMMENT 'Hora da transacao', `contaDeDebito` varchar(5) NOT NULL COMMENT 'Conta a qual esta saindo o dinheiro.', `formaPagamento` varchar(5) NOT NULL COMMENT 'Forma que esta sendo feito o pagamento. Dinheiro, Cartão, ...', `obs` varchar(255) DEFAULT NULL, `cheqBomPara` varchar(10) DEFAULT NULL COMMENT 'Data Prevista para compensar/debitar/sacar.', `cheqBanco` varchar(5) DEFAULT NULL, `cheqAgencia` varchar(20) DEFAULT NULL, `cheqNumero` int(20) DEFAULT NULL, PRIMARY KEY (`ID_FinanS`) ); INSERT INTO `financ_despesa` (`ID_FinanS`, `id_fornec`, `nome`, `planoDeConta`, `valor`, `data`, `transao`, `numDocumento`, `hora`, `contaDeDebito`, `formaPagamento`, `obs`, `cheqBomPara`, `cheqBanco`, `cheqAgencia`, `cheqNumero`) VALUES (1, 1, 'Teste', '', '777.77', '2013-07-07', 'SN', NULL, '22:48:00', '1', '1', NULL, NULL, NULL, NULL, NULL); CREATE TABLE IF NOT EXISTS `financ_receita` ( `ID_FinanE` int(255) NOT NULL AUTO_INCREMENT, `id_cadastro` int(255) NOT NULL, `nome` varchar(255) NOT NULL, `planoDeConta` varchar(20) NOT NULL COMMENT 'Plano de Conta', `valor` varchar(20) NOT NULL, `data` date NOT NULL, `envelope` varchar(50) DEFAULT NULL COMMENT 'Nr. de envelope caso exista.', `contaBancaria` int(5) NOT NULL COMMENT 'Conta bancária que ira receber o valor.', `formaEntrada` int(5) NOT NULL COMMENT 'Dinheiro, Cheque, Cartão, ...', `obs` varchar(255) DEFAULT NULL, `cheqNomeProprietario` varchar(255) DEFAULT NULL, `cheqBanco` varchar(5) DEFAULT NULL, `cheqAgencia` varchar(20) DEFAULT NULL, `cheqConta` varchar(20) DEFAULT NULL, `cheqNumero` varchar(20) DEFAULT NULL, `cheqDataDeposito` varchar(10) DEFAULT NULL, PRIMARY KEY (`ID_FinanE`) ); INSERT INTO `financ_receita` (`ID_FinanE`, `id_cadastro`, `nome`, `planoDeConta`, `valor`, `data`, `envelope`, `contaBancaria`, `formaEntrada`, `obs`, `cheqNomeProprietario`, `cheqBanco`, `cheqAgencia`, `cheqConta`, `cheqNumero`, `cheqDataDeposito`) VALUES (1, 1, 'Tiago', '3.1.01', '300.00', '2013-12-02', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (2, 2, 'Membro de teste 1', '3.1.01', '250.00', '2012-10-07', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (3, 3, 'Membro de teste 2', '3.1.01', '700.00', '2013-12-02', NULL, 1, 2, 'Depositar somente na data', 'Fulano de teste', '18', '5545', '3215-5', '122211122', '2013-12-17'), (4, 1, 'Tiago', '3.1.01', '125.70', '2012-12-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (5, 0, 'Visitante', '3.1.01', '55.00', '2013-10-02', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (6, 1, 'Tiago Pereira Caus', '3.1.01', '300.00', '2012-12-02', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (7, 2, 'Membro de teste 1', '3.1.01', '250.00', '2012-10-07', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (8, 3, 'Membro de teste 2', '3.1.01', '700.00', '2013-12-02', NULL, 1, 2, 'Depositar somente na data', 'Fulano de teste', '18', '5545', '3215-5', '122211122', '2011-12-17'), (9, 1, 'Tiago', '3.1.01', '125.70', '2013-12-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (10, 1, 'Tiago', '3.1.01', '125.70', '2011-12-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (11, 1, 'Tiago', '3.1.01', '125.70', '2012-12-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (12, 1, 'Tiago', '3.1.01', '125.70', '2012-08-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (13, 1, 'Tiago', '3.1.01', '125.70', '2012-01-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (14, 1, 'Tiago', '3.1.01', '125.70', '2012-02-01', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (15, 0, 'Visitante', '3.1.01', '55.00', '2011-10-02', NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL); Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Dezembro 3, 2013 Estou tentando de tudo, acabai achando um site que da para testar online. Se alguém souber como ajudar, veja http://www.sqlfiddle.com/#!2/6bf619/2 Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Dezembro 4, 2013 Olá tiago, tá na mão (select `nome` as nome_d, `valor` * -1 as valor_d, `planoDeConta` as planoDeConta_d, `data` as data_d from financ_despesa) union (select nome, valor as valor_d, planoDeConta, `data` from financ_receita) Seguinte, deixa dar uma explanada: o que foi feito foi uma union, os valores das duas tabelas foram colocadas nelas. O que foi feito para diferenciar? se vc reparar, na primeira query, na coluna valor, foi usado um multiplicador "*-1"(que sinaliza despesas), já ai é apenas utilizar seu metodo de agrupamento que vc vem utilzando. Espero ter ajudado :D Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Dezembro 23, 2013 Amigão, você ajudou e muito. Agora estou em outra fria. Estou fazendo uma busca nas duas tabelas: (SELECT nome, data, valor FROM `financ_receita` WHERE data BETWEEN ('2012-12-01') AND ('2013-12-23')) UNION ALL (SELECT nome, data, valor FROM `financ_despesa` WHERE data BETWEEN ('2012-12-01') AND ('2013-12-23')) ORDER BY data ASC É possível no valor da despesa aparecer com o sinal de - na frente? Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Dezembro 28, 2013 tiago, use do jeito qu te passei, pois, como mostrado acima, já está com um multiplicador (-1) que já sinaliza se tem debito. Vi que vc deu uma alterada na query, sem problemas, apenas mantenha, na tabela despesa, o multiplicador -1 Compartilhar este post Link para o post Compartilhar em outros sites