Запрос TypeORM с подзапросом и присоединением - PullRequest
0 голосов
/ 05 августа 2020

Я посмотрел на использование QueryBuilder, но мне трудно сопоставить запрос SQL с ним для следующего сценария.

Схема

партнер

  • id
  • имя

продажа

  • row_id
  • партнер -> partner.id
  • другие данные о продажах

sale_event - эта таблица отслеживает N событий рабочего процесса и данные о состоянии продажи.

  • uuid
  • sale_id - > sale.row_id
  • event_workflow
  • event_action
  • created

Учитывая идентификатор партнера, мне нужно получить все заказы для указанного c рабочий процесс подтверждение продажи , которые находятся в состоянии ожидает или не имеют событий для рабочего процесса подтверждения продажи .

У меня есть после SQL, который должен получить то, что мне нужно, но сопоставить это с построителем запросов TypeORM было немного сложно. Большинство встреченных мною примеров, в которых используются подзапросы, немного проще и выглядят так, будто они также используют старую версию TypeORM.

select s.*,
       p.*,
       ev.*
    from sale s
             inner join partner p on s.partner = p.id
             inner join (
        # Get the most recent event in the 'sale-confirm' workflow
        select e.*
            from sale_event e
            where e.sale_id = -1
              and event_workflow = 'sale-confirm'
            order by e.created
            limit 1
    ) ev on ev.sale_id = s.row_id
where ev.event_action = 'pending';
...