La réponse courte serait :stocker dans la session non pas les données mais uniquement le choix de l'utilisateur.
Sur une dernière page, faites tous vos calculs.
Bonne réponse :la table temporaire devrait être l'action du dernier espoir. Doit être utilisé uniquement si aucun mécanisme RDBMS régulier ne peut être utilisé.
Très probablement, votre logique peut être mappée sur des jointures standard. Mais il est impossible d'en dire plus car la logique est encore inconnue.