2015-10-07 95 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

相關問題