MySql Union Немедленное слияние с идентификатором родительской таблицы

Заранее спасибо.

Пытаюсь объединить две таблицы в одну. Следующий запрос возвращает результат, который я хочу. Я знаю, что UNION ALL будет объединять более одной таблицы.

Но я хочу объединить две строки таблицы сразу после родительской строки.

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

Приведенный выше запрос возвращает все refunds rows после окончания sales rows. Но мне нужно отобразить все refund rows immediate after each sales rows. таблица возвратов имеет таблицы продаж ID (Primary Key). Есть ли способ добиться этого?


person Mohamed Asif    schedule 08.04.2016    source источник


Ответы (1)


Это можно сделать с помощью order by по id/sale_id.

Попробуй это:

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
person Dylan Su    schedule 08.04.2016