Entonces, básicamente, su problema se puede formular como:
The first product of two adjacent products of type 3 cannot be placed
in a position which is a multiple of 5.
Lo que complica las cosas es que no hay orden en su mesa, y sin orden, es imposible definir una "posición" constante para sus productos. No se especifica el orden de las filas devueltas para SELECT sin ORDER BY.
De todos modos, la forma más sencilla de hacerlo es en la aplicación. Tome sus resultados como una matriz, escanéelos y, si encuentra dos productos que no están en la posición correcta, simplemente mézclelos en la matriz.