2016-04-08 23 views
2

Önceden teşekkürler.MySql Union Anında tablo kimliği

İki tabloyu bir araya getirmeye çalışıyorum. Aşağıdaki sorgu, istediğim sonucu döndürür. Bildiğim UNION ALL, birden fazla tabloyu birleştirecek.

Ancak üst satırdan hemen sonra iki tablo satırını birleştirmek istiyorum.

SELECT 
    temp.transactionId, 
    temp.amount, 
    temp.transactionType 
FROM 
    (
    (SELECT 
     sale.transaction_id AS transactionId, 
     sale.amount AS amount, 
     'SALE' AS transactionType 
    FROM 
    t_sales sale 
    WHERE 
     sale.merchant_id = '1' 
    ) 

    UNION ALL 

    (SELECT 
     refund.refund_transaction_id AS transactionId, 
     refund.amount AS amount, 
     'REFUND' AS transactionType 
    FROM 
     t_refunds refund 
    WHERE 
     refund.merchant_id = '1' 
    ) 
) 
AS temp 

Yukarıdaki sorgu sales rows sonunda tüm refunds rows döndürür. Ama tüm refund rows immediate after each sales rows'u görüntülemem gerekiyor. iadeler tablosunun satış tabloları ID (Primary Key) vardır. Bunu başarabilmenin bir yolu var mı?

cevap

1

Bu, id/sale_id üzerinde order by tarafından yapılabilir.

bu deneyin: yorum için

SELECT 
    temp.transactionId, 
    temp.amount, 
    temp.transactionType 
FROM 
    (
    (SELECT 
     sale.transaction_id AS transactionId, 
     sale.amount AS amount, 
     'SALE' AS transactionType, 
     id, 
     1 
    FROM 
    t_sales sale 
    WHERE 
     sale.merchant_id = '1' 
    ) 

    UNION ALL 

    (SELECT 
     refund.refund_transaction_id AS transactionId, 
     refund.amount AS amount, 
     'REFUND' AS transactionType, 
     sale_id as id, 
     2 
    FROM 
     t_refunds refund 
    WHERE 
     refund.merchant_id = '1' 
    ) 
    ORDER BY 4,5 
) 
AS temp 
+0

Dylan Su sayesinde. Fikrini deneyeceğim ve bilmene izin vereceğim .. –