Więc w zasadzie twój problem można sformułować jako:
The first product of two adjacent products of type 3 cannot be placed
in a position which is a multiple of 5.
Sprawę komplikuje fakt, że w Twoim stole nie ma porządku, a bez zamówienia nie da się określić stałej „pozycji” dla Twoich produktów. Kolejność zwracanych wierszy dla SELECT bez ORDER BY nie jest określona.
W każdym razie najprostszym sposobem na to jest aplikacja. Pobierz wyniki jako tablicę, zeskanuj je, a jeśli znajdziesz dwa produkty, które nie są we właściwej pozycji, po prostu przetasuj je w tablicy.