У меня есть 2 запроса с одинаковыми 3 связанными таблицами, и каждая из них работает отлично. Но в идеале я хотел бы объединить их в один запрос. Итак: < /p>
select me.id, me.title, me.start_date_time,
count(mti.checkin) from mco_event me
left outer join mco_ticket_instance as mti on mti.event_id = me.id and mti.checkin is not null
where me.start_date_time > '2024-01-01'
group by me.id order by me.start_date_time asc;
< /code>
Получает мне правильное количество чеков. < /p>
select me.id, me.title, me.start_date_time,
count(mol.status) from mco_event as me
join mco_ticket_instance mti1 on mti1.event_id=me.id
join mco_order_line mol on mol.id = mti1.order_line_id and mol.status='order_paid'
where me.start_date_time > '2024-01-01'
group by me.id order by me.start_date_time asc;
< /code>
Второй дает мне допустимый (order_paid) счет. Но если я комбинирую это: < /p>
select me.id, me.title, me.start_date_time,
count(mti.checkin),
count(mol.status) from mco_event as me
join mco_ticket_instance mti1 on mti1.event_id=me.id
join mco_order_line mol on mol.id = mti1.order_line_id and mol.status='order_paid'
left outer join mco_ticket_instance as mti on mti.event_id = me.id and mti.checkin is not null
where me.start_date_time > '2024-01-01'
group by me.id order by me.start_date_time asc;
< /code>
Это вращается в течение 15 секунд, а затем возвращает количество, которые являются дико неправильными (например, 53,345, когда максимальный возможный должен быть 450), а каждый отдельный счет одинаково (что всегда неправильно). Таким образом, каждое объединение работает, но только когда отдельно.
Bactstory: MCO_EVENT - это таблица «MAIN», MCO_TICKET_INSTANCE имеет EVENT_ID, которая имеет MCO_EVENT.ID и order_line_id, который является MCO_ORDER_LINE.ID.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... iple-joins