Så i princip kan ditt problem formuleras som:
The first product of two adjacent products of type 3 cannot be placed
in a position which is a multiple of 5.
Det som komplicerar saker och ting är att det inte finns någon ordning i ditt bord, och utan en beställning är det omöjligt att definiera en konstant "position" för dina produkter. Ordningen på returnerade rader för en SELECT utan ORDER BY är inte specificerad.
Hur som helst, det enklaste sättet att göra detta är i applikationen. Ta dina resultat som en array, skanna den och om du hittar två produkter som inte är i rätt position, blanda dem helt enkelt runt i arrayen.