There seems to be a problem when using dynamic rules engine expressions for related objects.
Object A has multiple Object B
Get all Object A which do NOT have Object B with property X = "xxx"
Get all Object A which do have Object B that do either not have a property X or property X != "xxx"
Case 1 and Case 2 should in theory have the same result.
The problem is that for Case 1, Preside only checks if the count = 0, but does not check if it's NULL (having no match at all)
See screenshots for specific example, including the comparison of the 2 generated SQL scripts.
The specific example is:
product has a one-to-many relationship to product_feature
You see 2 filters for products each using filters for product_features
the 2 product feature filters are z=1 and z!=1.
Let me know if you need further information.