Rules Engine "One-To-Many Has" Dynamic Filter Expression improvements

Description

Currently a Left join with a subquery in combination with a where clause filter is used for this filter.This is not optimal as via the extra join the query result set is manipulated and not just filtered, requiring a distinct to get rid of duplicates.
Proposal: use exists filter instead.
Example:
Current:
select distinct
testplatform.identifier,
testplatform.name,
testplatform.description,
testplatform.id as id
from
`pobj_testplatform` `testplatform`
left join
(
select
Count( configurations.id ) as onetomany_count
, testplatform.id as id
from
`pobj_testplatform` `testplatform`
left join
`pobj_testplatform_configuration` `configurations`
on (`configurations`.`testplatform` = `testplatform`.`id`)
where
( configurations.is_active = true )
group by
testplatform.id
) `oneToManyHasc4ebef8acd4545f8914a7fbcc861944b`
on (`oneToManyHasc4ebef8acd4545f8914a7fbcc861944b`.`id` = `testplatform`.`id`)
where
(
( oneToManyHasc4ebef8acd4545f8914a7fbcc861944b.onetomany_count > 0 )
)

Proposed change:
select
testplatform.identifier,
testplatform.name,
testplatform.description,
testplatform.id as id
from
`pobj_testplatform` `testplatform`
where
(
exists (
select
1
from
`pobj_testplatform_configuration` `configurations`
where
configurations.testplatform = testplatform.id
and ( configurations.is_active = true )
group by
configurations.testplatform
having
count(`configurations`.`id`) > 1
)
)

Your pinned fields
Click on the next to a field label to start pinning.

Assignee

Unassigned

Reporter

Jan Jannek