Cita: Tengo este sistema de mensajes y necesito mostrar los mensajes que no han sido eliminados es decir que sean diferentes de "eli"
Por un lado, pareces tener un sistema de mensajes algo complicado, o al menos no muy estándar. Es posible que lo hayas construido sobre la marcha, sin buscar si existen modelos de ejemplo que pudieses adaptar o usar.
Consejo: No trates de inventar la rueda. Ya hay muchos sistemas de ese uso que puedes encontrar en librerías de diseños de bases de datos. Úsalos.
Por otro lado, no entiendo muy bien por qué te metes a manejar variables de usuario en MySQL.
Ese tipo de variables son extremadamente potentes, pero no son sencillas de usar. Hay que estar habituado para dominarlas, y aún así se mete la pata con ellas.
Pero por sobre todo, no entiendo para qué usar ese tipo de variables, en un caso donde no parecen ser necesarias porque todos los parámetros ya los tienes antes de la consulta.
Veamos... Para lograr esto:
Cita: ...necesito mostrar los mensajes que no han sido eliminados es decir que sean diferentes de "eli"
Para descartar todos los eliminados, la consulta es tan sencilla como:
SELECT id, yo, el, estadoyo, estadoel
FROM tabla
WHERE estadoyo = 'eli' OR estadoel != 'eli';
Ahora bien, esto no se entiende ni medio:
Cita: //Si la tabla yo es igual a 1 vale el texto YO sino vale EL
@soy:=IF(yo=$session,'YO','EL')
//Si soy vale YO vale el valor del estadoyo sino vale estadoel
@estado:=IF(@soy='YO',estadoyo,'estadoel')
Pero si lo que quieres decir es que si la primera columna es 1, ponga el valor de la tercera y si no el de la cuarta, eso es tan simple como:
Porque si el uso del primer cálculo es sólo para determinar cuál de los otros valores pones, ese calculo se vuelve innecesario.
¿Podrías aclararme si estos son los resultados esperados?
PD: Tengo la impresión de que no tienes una practica extensa en SQL, o bien estás mezclando los métodos de programación con los de BBDD/SQL, que no son lo mismo.