Hola, (quizas ya lo solucionaste), se me ocurren una alternativa distinta a las propuestas.
Porque no en la tabla "lemas_lemas" agregas una columna que sea "orden_aux", luego en los trigger after [insert/update/delete] pones un codigo como este:
Código MySQL:
Ver originalUPDATE lemas_lemas
INNER JOIN (SELECT (@rownum
:=(if(@fkant
=FKStatus
, @rownum
+1, 0))) orden_aux
, (@fkant
:=FKStatus
) orden_ant
, PKlema
FROM lemas_lemas
, (SELECT @rownum
:=0, @fkant
:=0) aux
ORDER BY FKStatus
, lema
ASC) tmp
ON lemas_lemas.PKlema
= tmp.PKlema
SET lemas_lemas.orden_aux
= tmp.orden_aux
En el campo orden_aux tendras entonces un campo ordenado para cada estado de la FKStatus según lema ASC
Si no te alcanza teniedo este campo puedes crear las vistas que necesites ya que no nesesitaras usar parametros ni variables, solo te referenciaras a orden_aux.
asi como puse la sentencia te sirve para cualquier FKStatus, si quieres que solo sea para el caso articular de 5 quedaria asi:
Código MySQL:
Ver originalUPDATE lemas_lemas
INNER JOIN (SELECT (@rownum
:=(if(@fkant
=FKStatus
, @rownum
+1, 0))) orden_aux
, (@fkant
:=FKStatus
) orden_ant
, PKlema
FROM lemas_lemas
, (SELECT @rownum
:=0, @fkant
:=0) aux
ORDER BY lema
ASC WHERE FKStatus
= 5) tmp
ON lemas_lemas.PKlema
= tmp.PKlema
SET lemas_lemas.orden_aux
= tmp.orden_aux
saludos