В последнем запросе вы пытаетесь найти строку, у которой `attribute_id` одновременно равно и 1, и 2.
Вам же нужно найти разные строки в product_attribute_value с разными условиями, самое простое, что приходит в голову - подзапросы с exists:
select * from products where active = 1
and exists (select from product_attribute_value where product_id = products.id and attribute_id = 1 and value = 10)
and exists (select from product_attribute_value where product_id = products.id and attribute_id = 2 and value = 15)