· 7 years ago · Sep 12, 2018, 02:16 AM
1CREATE TABLE IF NOT EXISTS cuotas
2(
3 cuota_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
4 importe DECIMAL(10,2),
5 fecha_vencimiento DATETIME
6 )ENGINE=INNODB;
7
8INSERT INTO cuotas (importe,fecha_vencimiento)
9 VALUES
10 (1000.00,'2018-09-20'),
11 (5000.00,'2018-08-20'),
12 (8000.00,'2018-09-21'),
13 (2000.00,'2018-09-28'),
14 (1500.00,'2018-12-25');
15
16
17CREATE TABLE IF NOT EXISTS pagos
18(
19 cuota_id INT NOT NULL,
20 tipo_id INT NOT NULL, -- por esta columna identificamos el tipo de pago: 1. Efectivo, 2. Cheque
21 importe DECIMAL(10,2),
22 fecha_pago DATETIME,
23 CONSTRAINT pagos_PKA01 UNIQUE (cuota_id,fecha_pago),
24 FOREIGN KEY (cuota_id) REFERENCES cuotas(cuota_id)
25 ON UPDATE CASCADE ON DELETE CASCADE
26)ENGINE=INNODB;
27
28INSERT INTO pagos (cuota_id,tipo_id,importe,fecha_pago)
29 VALUES
30 (1,1,1000.00,'2018-09-11'),
31 (4,2,2000.00,'2018-09-11');
32
33SELECT
34 CASE
35 WHEN p.fecha_pago IS NULL THEN 'Por pagar'
36 ELSE p.fecha_pago
37 END AS status_pago,
38 CASE
39 WHEN c.fecha_vencimiento < NOW() AND p.importe IS NULL THEN 'Vencido'
40 ELSE 'No-Vencido'
41 END AS status_fecha,
42 p.importe,
43 p.tipo_id,
44 c.fecha_vencimiento
45FROM cuotas c
46 LEFT JOIN pagos p ON c.cuota_id=p.cuota_id
47;
48
49status_pago status_fecha importe tipo_id fecha_vencimiento
50--------------------------------------------------------------------------
512018-09-11 No-Vencido 1000,00 1 20.09.2018
522018-09-11 No-Vencido 2000,00 2 28.09.2018
53Por pagar Vencido NULL NULL 20.08.2018
54Por pagar No-Vencido NULL NULL 21.09.2018
55Por pagar No-Vencido NULL NULL 25.12.2018