Witam,
w aplikacji c# najpierw pobieram z bazy 5 elementów np. marek samochodów. Następnie dla każdego elementu pobieram i przypisuję po 3 kolory. Po takim jednorazowym pobraniu tych danych zapisuję markaId i kolorId do tabeli wykonano po to, by w przyszłości nie produkować tej samej marki w tym samym kolorze.

Innymi słowy:
Mogę wyprodukować jednorazowo 5 samochodów w 3 kolorach. Jeśli nie ma dostępnego koloru (po każdym wyprodukowaniu koloru zmniejszam ilość dostępnych sztuk danej farby) to szuka kolejnego koloru w którym mogę wyprodukować (o ile wcześniej w nim nie wyprodukowałem)

W tabeli to wygląda tak:

+---------+----------+
| markaId | marka    |
+---------+----------+
| 1       | example1 |
+---------+----------+
| 2       | example2 |
+---------+----------+
| 3       | example3 |
+---------+----------+
+---------+-----------+---------------+
| kolorId | kolor     | pozostałoFarb |
+---------+-----------+---------------+
| 1       | zielony   | 1             |
+---------+-----------+---------------+
| 2       | niebieski | 0             |
+---------+-----------+---------------+
| 3       | czarny    | 8             |
+---------+-----------+---------------+
+------------+---------+---------+
| wykonanoId | markaId | kolorId |
+------------+---------+---------+
| 1          | 1       | 2       |
+------------+---------+---------+
| 2          | 17      | 1       |
+------------+---------+---------+
| 3          | 4       | 2       |
+------------+---------+---------+ 

Jak pisałem, każdej marce odpowiadają 3 kolory. Po pobraniu danych chciałbym się teraz poruszać pętlą po wszystkich markach i kolorach, ale w taki sposób, że najpierw przelecę przez wszystkie kolory. Innymi słowy: zamiast produkować fiata na raz w 3 kolorach produkuję w jednym kolorze. W kolejnym przejściu pętli w kolejnym kolorze itd.

Czyli:
mając:
Example1 - zielony, niebieski, czarny
Example2 - niebieski, czarny, fioletowy
Example3 - niebieski, czarny, fioletowy
Example4 - czarny, fioletowy, pomarańczony
Example5 - pomarańczony, szary, biały

Przejadę przez to pętlą tak:
Example1 - zielony
Example2 - niebieski
Example3 - niebieski
Example4 - czarny
Example5 - pomarańczowy
Example1 - niebieski
Example2 - czarny
Example3 - czarny
Example4 - fioletowy
Example5 - szary
Example1 - czarny
Example2 - fioletowy
Example3 - fioletowy
Example4 - pomarańczowy
Example5 - biały

Obecnie w aplikacji rozwiązałem to tak, że mam 2 tablice.

Marki[x,y]
x - idMarki
y- Marka
[0,0] - IdMarki
[0,1] - Marka
[1,0] - IdMarki
[1,1] - Marka
[2,0] - IdMarki
[2,1] - Marka

Kolory
[a,b,c]
a - indeks samochodu w pętli
b - indeks koloru w pętli
c - IdKoloru/kolor
[0,0,0] - zielony
[0,0,1] - 1
[0,1,0] - niebieski
[0,1,1] - 0
[0,2,0] - niebieski
[0,2,1] - 0

Teraz tworzę pętlę w taki sposób:
For x As Integer = 0 To 2  'Pierwszy kolor dla pięciu samochodów

		For i as Integer = 0 To 4 'Dla kolejnych samochodów

				produkuj(i,x,0)
				zanotujZeJuzWyprodukowano(i,x,1)


		Next

Next

I ogólnie to działa tak jak powinno. Najpierw zostaje wyprodukowanych 5 samochodów w pierwszym kolorze który im dopasowało. Potem w drugim kolorze a potem w trzecim. Po każdym wyprodukowaniu zmniejszam ilość posiadanych farb i jakoś to działa.

Chciałbym teraz dodać więcej informacji do bazy, a niestety takie działanie na wielowymiarowych tablicach jest dość uciążliwe w kodowaniu. Domyślam się, że istnieją lepsze sposoby na rozgryzienie tego. Wydaje mi się, że problemem może być to w jakiej kolejności mają być produkowane te samochody.

Proszę w takim razie o pomoc/rady.