2015-10-07 99 views
1

您好社会,我与MySQL数据库的工作,我有不同的记录两份名单,但我希望他们在一起,一个在另一个之下,根据日期的起源,以及我在下面:在日期中按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 

我的目标是团结彼此的登记,这取决于出生日期

如下图:

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

显示您想要的结果也在您的帖子根据第1 2结果。 –

+1

你为什么在php标签? –

回答

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; 
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`; 
+0

当两个SELECT语句中的日期相同时,这将无法正常工作。 –

0

我发现这个问题有点不清楚,但我想你想要的是一个完整的JOIN。

基本上,你需要做的:

select * from 
(
    select 1 
) a 
FULL JOIN 
(
    select 2 
) b 
on a.date = b.date 

其中选择1和选择2,你已经张贴了什么。

但是,因为MySQL不支持FULL JOIN,你需要效仿,做事情是这样解释的here

相关问题