No se que motor estas usando, si es mysql, IF(P.ruta_foto IS NULL,1,0) te sirve para forzar que los nulos salgan despues de los no nulos...
left join ... on ...
Hace que salgan
todos los registros de la tabla de la izquierda combinados con los de la de la derecha.
Quim