Dus in principe kan uw probleem worden geformuleerd als:
The first product of two adjacent products of type 3 cannot be placed
in a position which is a multiple of 5.
Wat de zaken compliceert, is dat er geen volgorde in uw tabel is, en zonder een bestelling is het onmogelijk om een constante "positie" voor uw producten te definiëren. De volgorde van geretourneerde rijen voor een SELECT zonder ORDER BY is niet gespecificeerd.
Hoe dan ook, de eenvoudigste manier om dit te doen is in de applicatie. Pak uw resultaten als een array, scan deze en als u twee producten vindt die niet op de juiste positie staan, schudt u ze gewoon door de array.