Klauzula WHERE może jednocześnie przeglądać tylko kolumny z jednego wiersza.
Więc jeśli potrzebujesz warunku, który dotyczy dwóch różnych wiersze z tabeli, musisz dołączyć do tej tabeli dwukrotnie, aby uzyskać kolumny z obu wierszy.
SELECT p.*
FROM "products" AS p
INNER JOIN "custom_field_answers" AS a1 ON p."id" = a1."product_id"
INNER JOIN "custom_field_answers" AS a2 ON p."id" = a1."product_id"
WHERE a1."value" = 'bangle' AND a2."number_value" < 50