Hello社区我正在使用MySql数据库,我有两个不同记录的列表,但我希望它们一个在另一个之下,具体取决于日期来源以及我在下面显示:
第一个清单:
SELECT p.ICODPRESTAMO,
p.NCAPITAL,
(p.NMONPRESTAMO - p.NCAPITAL) AS INTERES,
DATE_FORMAT(p.TSFECCREACION,'%d/%m/%Y') AS FECHA
FROM TABPRESTAMO p
WHERE p.ICODPADPRESTAMO IS NOT NULL
AND p.ICODPERBENEFICIARIA = 2
AND p.SICODESTADO = 1;
SQL返回:
ICODPRESTAMO NCAPITAL INTERES FECHA
2 2000.00 200.00 01/02/2014
3 1650.00 247.50 04/06/2014
4 6000.00 900.00 09/06/2014
5 60.00 0.00 22/07/2014
6 600.00 48.00 06/01/2014
7 1500.00 112.50 28/03/2014
8 1600.00 64.00 24/06/2014
9 525.00 0.00 13/09/2014
18 582.00 0.00 03/10/2015
第二个清单:
SELECT a.ICODAMORTIZACION,
a.NABOMONTO,
DATE_FORMAT(a.TSFECCREACION,'%d/%m/%Y') AS FECHA
FROM TABAMORTIZACION a
WHERE a.ICODPRESTAMO = 1
AND a.SICODESTADO = 1;
SQL返回:
ICODAMORTIZACION NABOMONTO FECHA
1 200.00 16/03/2014
2 200.00 23/03/2014
3 200.00 30/03/2014
4 200.00 13/04/2014
5 200.00 20/04/2014
6 150.00 27/04/2014
7 150.00 04/05/2014
8 200.00 10/05/2014
9 200.00 17/05/2014
10 150.00 24/05/2014
11 232.00 15/09/2014
我的目标是根据 FECHA
联合彼此的注册如下图所示:
http://i.stack.imgur.com/JsH5F.jpg
按照以下方式开发我的程序:
DELIMITER //
CREATE PROCEDURE reporte4(cod_prestamo INT, cod_per_beneficiaria INT)
BEGIN
-- Declaración de variables
DECLARE ID_PRESTAMO INT;
DECLARE CAPITAL DECIMAL(8,2);
DECLARE PRESTAMO DECIMAL(8,2);
DECLARE FECHA VARCHAR(10);
-- Definición de la consulta
DECLARE prestamo_beneficiario CURSOR FOR
SELECT p.ICODPRESTAMO,
p.NCAPITAL,
(p.NMONPRESTAMO - p.NCAPITAL) AS INTERES,
DATE_FORMAT(p.TSFECCREACION,'%d/%m/%Y') AS FECHA
FROM TABPRESTAMO p
WHERE p.ICODPADPRESTAMO IS NOT NULL
AND p.ICODPERBENEFICIARIA = 2
AND p.SICODESTADO = 1;
-- Declaración de un manejador de error tipo NOT FOUND
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE;
-- Abrimos el cursor
OPEN prestamo_beneficiario;
-- Comenzamos nuestro bucle de lectura
loop1: LOOP
-- Obtenemos la primera fila en la variables correspondientes
FETCH prestamo_beneficiario INTO ID_PRESTAMO, CAPITAL, PRESTAMO, FECHA;
-- Si el cursor se quedó sin elementos,
-- entonces nos salimos del bucle
IF @hecho THEN
LEAVE loop1;
END IF;
-- Guardamos el acumulado de ventas y el código
-- si el vendedor actual tiene mejores resultados
-- SET FECHA_EVA = FECHA_EVA + FECHA;
-- SELECT FECHA_EVA;
END LOOP loop1;
-- Cerramos el cursor
CLOSE prestamo_beneficiario;
SELECT prestamo_beneficiario;
END //
DELIMITER ;
我希望你能告诉我如何处理这个案子。
答案 0 :(得分:0)
在MySQL中使用UNION方法
例如
SELECT
`column_id` AS `id`,
`column_name` AS `name`,
`column_date` AS `date`
FROM `table_name`
UNION
SELECT
`column_id` AS `id`,
`column_name` AS `name`,
`column_date` AS `date`
FROM `second_table_name`
ORDER BY `date`;
答案 1 :(得分:0)
我发现这个问题有点不清楚,但我认为你想要的是一个完全加入。
基本上,您需要这样做:
select * from
(
select 1
) a
FULL JOIN
(
select 2
) b
on a.date = b.date
其中,选择1和选择2是您已经发布的内容。
但是,由于MySQL不支持FULL JOIN,你需要模拟它,解释它的方法here
答案 2 :(得分:0)
然后使用ASC订单
SELECT
`column_id` AS `id`,
`column_name` AS `name`,
`column_date` AS `date`
FROM `table_name`
UNION
SELECT
`column_id` AS `id`,
`column_name` AS `name`,
`column_date` AS `date`
FROM `second_table_name`
ORDER BY `date` ASC;