У меня есть 3 таблицы: order
, order_transaction
и order_history
.
В order
сохраняется только одна запись заказа вместе с order_id
.В order_history
я сохраняю все транзакции, происходящие в этом заказе, как orderAccepted
, orderInProgress
(это события в этом заказе).В order_transaction
сохраняются все детали транзакции.transaction_id
в обеих таблицах, т. Е. order_transaction
и order_history
, остаются неизменными.
content of tables are
order
id
created by
created_date
client type
type
qty
price
order_history
id
order_id
transaction_id
events
created_date
order_transaction
id
order_id
transaction_id
qty
price
status
Существует событие, при котором у клиента может быть выполнен возврат заказа, называемого orderProccessedReverted
, но это не выполняется за один раз.Например, если был порядок 1000 кол-во, а затем он был отменен, он будет разбит на 10 разных записей, где order_id
останется неизменным, но транзакция изменится, и эта запись будет присутствовать как в order_transaction
, так и order_history
таблицы.
Примером записей в обеих таблицах будет:
order_history
id order_id transaction_id events created_date
001 1111 345 orderProccessedReverted 20-08-19
002 1111 346 orderProccessedReverted 20-08-19
003 1111 347 orderProccessedReverted 20-08-19
order_transaction
id order_id transaction_id qty created_date
011 1111 345 100 20-08-19
012 1111 346 100 20-08-19
013 1111 347 100 20-08-19
Теперь я создаю отчет, в котором мне нужны все заказы, которые были отменены.Ниже приведены столбцы отчетов:
order_id created_by client_type transaction_id qty status events created_date
111 user1 type1 444 100 reverted orderProccessedReverted 20-08-19
111 user1 type1 445 100 reverted orderProccessedReverted 20-08-19
111 user1 type1 446 100 reverted orderProccessedReverted 20-08-19
111 user1 type1 447 100 reverted orderProccessedReverted 20-08-19
112 user2 type2 551 50 reverted orderProccessedReverted 20-08-19
112 user2 type2 552 50 reverted orderProccessedReverted 20-08-19
112 user2 type2 553 50 reverted orderProccessedReverted 20-08-19
Я пытался выполнить левое соединение и обычные объединения, но получил повторяющиеся записи.
Я пытался выполнить следующий запрос:
select * from
order_history orderHist,
order_transaction tr,
order ord
where
ord.id = tr.order_id
AND tr.order_id = orderhist.order_id
AND tr.transaction_id = orderhist.transaction_id
AND orderhist.event= 'orderProccessedReverted'
AND tr.status = 'REVERTED'
AND ord.tradedate='20190820';