12 semplici, magari con una progress bar che indica all'utente che il programma non si è incastrato.

Oppure cambi il tracciato del DB e utilizzi una tabella catalogo2colore (id_catalogo | id_colore | posizione) per esprimere la relazione tra catalogo e colore. Così puoi fare una query sola che coinvolge 3 tabelle (catalogo, catalogo2colore, colore) e la leggi con un ciclo.