Tienes una incongruencia en la consulta. Donde pones '...FROM ficha WHERE cif in (SELECT ...' vienes a decir que te busque los registros de ficha que tengan como valor de cif los valores del siguiente select. Lo que pasa es que en ese select estás devolviendo más de un valor. Entonces el MySQL no puede comparar un valor (cif) con varios valores (dominio, dvencimiento, distribuidor).
Un saludo