Ho una tabella di database in cui ogni riga è un film (con campi come "titolo", "direttore" e "autore") e una tabella correlata in cui ogni riga è uno screenshot di un film (con i campi " movie_id 'e' jpeg_data '). Ogni film ha 2-8 screenshot.
Voglio produrre dati nell'ordine
- Film 1
- Schermata 1
- Screenshot 2
- Film 2
- Schermata 1
- Screenshot 2
- Schermata 3
- Schermata 4
Ora la soluzione più semplice che ho trovato è quella di fare (uno pseudocodice approssimativo):
for movie in database.select id,title,director from movies
print movie.title, movie.director
for screenshots in database.select screenshots where movie_id = id
print screenshots.screenshot
Questo funziona - ma è un ciclo annidato in cui il ciclo interno sta effettuando una chiamata al database. Ciò renderebbe ~ 2.800 chiamate al database con il mio set di dati attuale, che sembra terribilmente lento e inefficiente.
Ci deve essere una soluzione migliore, ma non posso davvero pensarne una. Mi piacerebbe selezionare tutti i film e selezionare tutti gli screenshot, quindi trovare un modo per iterare attraverso i due array mantenendoli sincronizzati tra loro, se questa è la parola giusta.
Qual è la cosa giusta / ottimale da fare in questo caso?