Si la solución pasa por los join..s no se si son muchos o pocos. Quizas algun UNION tambien puede ayudar pero como sabes no hay una sola solución.
Si la solución que buscas es para la asignatura de Sql es obvio que no puedes usar php, si la solución se enmarca en un proyecto dependerá mucho del proyecto...
Cita: ...ya que esta mal ordenar y filtrar registros en php...
hay que leer lo que dice la teoria con flexibilidad... si por procedimientos previos tienes guardados en algun objeto unos datos que sabes que no pueden haber cambiado en el servidor... seria ineficiente no filtrarlos directamente del objeto y volver a pedirlos al servidor.