Możesz dołączyć do kickscooter_control_units
w Twoim subquery
użycie exists
słowo kluczowe zamiast IN.
select *
from rents r
where
exists
(select 1
from support_works sw
join kickscooters k on k.serial_number = sw.serial_number
join kickscooter_control_units kcu on kcu.kickscooter_id = k.id and kcu.particle_product_id in (9358, 9383)
where
sw.work_type = 'deploy' and
(sw.updated_at between '2019-11-01 02:00:00' and '2019-11-01 10:00:00'))
Wygląda na to, że na podstawie twojego scenariusza filtrujesz ID
. exists
ma zastosowanie tylko wtedy, gdy chcesz sprawdzić, czy określone subquery
zawiera wartości.
select *
from rents r
where
r.kickscooter_id in
(select k.id
from support_works sw
join kickscooters k on k.serial_number = sw.serial_number
join kickscooter_control_units kcu on kcu.kickscooter_id = k.id and kcu.particle_product_id in (9358, 9383)
where
sw.work_type = 'deploy' and
(sw.updated_at between '2019-11-01 02:00:00' and '2019-11-01 10:00:00'))