Donc, fondamentalement, votre problème peut être formulé comme suit :
The first product of two adjacent products of type 3 cannot be placed
in a position which is a multiple of 5.
Ce qui complique les choses, c'est qu'il n'y a pas d'ordre dans votre tableau, et sans ordre, il est impossible de définir une "position" constante pour vos produits. L'ordre des lignes renvoyées pour un SELECT sans ORDER BY n'est pas spécifié.
Quoi qu'il en soit, la façon la plus simple de le faire est dans l'application. Saisissez vos résultats sous forme de tableau, scannez-le et si vous trouvez deux produits qui ne sont pas dans la bonne position, mélangez-les simplement dans le tableau.