Good afternoon, I'm trying to send an extract of services from my registration.
Follow my database
CREATE TABLE 'cad_cliente' (
'id_cliente' smallint(5) UNSIGNED NOT NULL,
'nome_cliente' varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Extraindo dados da tabela 'cad_cliente'
--
INSERT INTO 'cad_cliente' ('id_cliente', 'nome_cliente')
VALUES
(10, 'Fernanda Rocha'),
(11, 'Érica Veloso Lima'),
(12, 'Fernando Mota');
CREATE TABLE 'cad_financeiro' (
'id_financeiro' smallint(5) UNSIGNED NOT NULL,
'id_trabalho' varchar(45) NOT NULL,
'valor_financeiro' decimal(10,2) NOT NULL,
'debito_credito_financeiro' varchar(100) NOT NULL,
'pago_financeiro' varchar(30) NOT NULL,
'descricao_financeiro' text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO 'cad_financeiro' ('id_financeiro', 'id_trabalho', 'valor_financeiro', 'debito_credito_financeiro', 'pago_financeiro', 'descricao_financeiro') VALUES
(25, '1183', '985.00', 'D', 'N', '08 Provisórios Convencionais R$ 560,00\r\n05 Provisórios Com Reforço R$ 425,00\r\n\r\n '),
(30, '1225', '80.00', 'D\r\n', 'N', '01 Provisorio'),
(31, '1226', '330.00', 'D\r\n', 'N', '01 Emax'),
(32, '1227', '250.00', 'C', 'N', 'PAGAMENTO');
CREATE TABLE 'cad_paciente' (
'id_paciente' smallint(5) UNSIGNED NOT NULL,
'nome_paciente' varchar(45) NOT NULL,
'id_cliente' varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO 'cad_paciente' ('id_paciente', 'nome_paciente', 'id_cliente') VALUES
(1123, 'Gildete', '11'),
(1165, 'Agnaldo', '11'),
(1166, 'Suelene', '11'),
(1167, 'PAGAMENTO', '11'),
(1168, 'Maria Aparecida', '11'),
(1169, 'Bernadete (Dra Isadora)', '19'),
(1170, 'Lisa', '36'),
(1171, 'Nathalia Alves', '56');
CREATE TABLE 'cad_trabalho' (
'id_trabalho' smallint(5) UNSIGNED NOT NULL,
'id_paciente' varchar(45) NOT NULL,
'id_dente' varchar(45) NOT NULL,
'id_servico' varchar(45) NOT NULL,
'id_cor' varchar(45) NOT NULL,
'observacao_trabalho' text NOT NULL,
'data_entrada_trabalho' date NOT NULL,
'data_saida_trabalho' date NOT NULL,
'pronto_trabalho' date NOT NULL,
'substrato_trabalho' varchar(250) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Extraindo dados da tabela 'cad_trabalho'
--
INSERT INTO 'cad_trabalho' ('id_trabalho', 'id_paciente', 'id_dente', 'id_servico', 'id_cor', 'observacao_trabalho', 'data_entrada_trabalho', 'data_saida_trabalho', 'pronto_trabalho', 'substrato_trabalho')
VALUES
(1181, '1120', '36', '01 Zirconia Sobre Implante', 'A3,5 Cervical /A3 Oclusal', '', '2016-05-30', '2016-06-06', '0000-00-00', 'Implante'),
(1182, '1122', '22,12,26', 'Facetas', 'D22 e 12 A2 / D26 A3,5', '', '2016-05-31', '2016-06-01', '0000-00-00', 'D22 A3 / D12 A3'),
(1183, '1123', '', 'Provisorio Superior Com Barra', 'A2', '', '2016-06-01', '2016-06-08', '2016-06-03', ''),
(1220, '1160', '', '', '', '', '2016-06-03', '2016-06-10', '0000-00-00', ''),
(1225, '1165', '', '', '', '', '0000-00-00', '0000-00-00', '2016-03-29', ''),
(1226, '1166', '', '', '', '', '0000-00-00', '0000-00-00', '2016-03-17', ''),
(1227, '1167', '', '', '', '', '0000-00-00', '0000-00-00', '2016-03-17', '');
I saw this post one I tried to do this as well but I could not create the table view
with all the information nescessito that is displayed as it is lowered by id_cliente
data paciente descricao debito credito saldo
2016-03-29 Agnaldo Provisorio 80,00 00,00 - 80,00
2016-05-20 Maria Aparecida 01 Emax 350,00 00,00 -430,00
2016-06-06 PAGAMENTO PAGAMENTO 00,00 250,00 -180,00
After a long time I got to this SELECT
but it can not return the data in the way I need it
SELECT *,
SUM(IF(debito_credito_financeiro = 'D', valor_financeiro, 0)) AS debito,
SUM(IF(debito_credito_financeiro = 'C', valor_financeiro, 0)) AS credito,
(SELECT SUM(IF(debito_credito_financeiro = 'C', valor_financeiro, -valor_financeiro)) FROM cad_financeiro AS L2 WHERE cad_financeiro.id_financeiro >= L2.id_financeiro) AS saldo
FROM cad_financeiro
JOIN cad_trabalho ON cad_financeiro.id_trabalho = cad_trabalho.id_trabalho
JOIN cad_paciente ON cad_trabalho.id_paciente = cad_paciente.id_paciente
JOIN cad_cliente ON cad_paciente.id_cliente = cad_cliente.id_cliente
WHERE cad_cliente.id_cliente = '11'
GROUP BY cad_cliente.id_cliente, id_financeiro ORDER BY id_financeiro