Intersect indexes that return Array and Ref

I need to order by price (low or high) and intersect with the by category index, but when using Join to get only the refs (dropping prices) the order is broken. How to use Join keeping the original ordering the by price index?

Paginate(
  Intersection(
    Join(
      Match(Index("all_products_by_category"), "blusas"),
      Lambda("ref", Match("product_ref_by_ref", Var("ref")))
    ),
    Join(
      Match(Index("all_products_by_price_asc")),
      Lambda(["price", "ref"], Match(Index("product_ref_by_ref"), Var("ref")))
    ),
    Join(
      Match(Index("all_products_by_views")),
      Lambda(["views", "ref"], Match(Index("product_ref_by_ref"), Var("ref")))
    )
  )
)