La respuesta corta sería:almacenar en la sesión no los datos, sino solo la elección del usuario.
En una página final, haga todos sus cálculos.
Respuesta adecuada:la mesa temporal debe ser una acción de última esperanza. Debe usarse solo si no se pueden usar mecanismos RDBMS regulares.
Lo más probable es que su lógica se pueda asignar a uniones estándar. Pero es imposible decir más ya que aún se desconoce la lógica.