La risposta breve sarebbe:archivia nella sessione non i dati ma solo la scelta dell'utente.
In una pagina finale fai tutti i tuoi calcoli.
Risposta corretta:il tavolo temporaneo dovrebbe essere l'azione dell'ultima speranza. Devono essere utilizzati solo se non è possibile utilizzare i normali meccanismi RDBMS.
Molto probabilmente la tua logica può essere mappata su join standard. Ma è impossibile dire di più poiché la logica è ancora sconosciuta.