Cita: Vale, a mi lo que me interesa es la tabla servicios. Para obtener el nombre del usuario tengo que enlazarla a la tabla usuarios por el dni y para obtener el nombre de la empresa me dirijo a la tabla empresas enlazandola con el cif. Hay que destacar que el usuario del servicio puede ser tanto un dni como un cif(o sea, tanto una persona como una empresa). Por lo tanto en servicios no hay 2 campos, sólo 1 y debería poder identificar en qué tabla se encuentra el nombre asociado al usuario.
Bueno, por empezar tienes problemas de análisis y diseño. De análisis, porque estás planteando un sistema algo conflictivo, cuando quieres relacionar un mismo campos de una tabla con dos campos de tablas distitas,
cuyo dominio es completamente diferente... En Análisis de Sistemas eso te hubiese reprobado cualquier examen. La explicación de por qué está mal es demasiado larga para postearla ahora.
Vamos al problema de la consulta.
La consulta que plantea pretende obtener datos de "servicios", brindados a usuarios que pueden ser empresas o personas. Pero lo que pides es que
si o si correspondan a usuarios (el INNER JOIN a Usuarios), y sólo te devuelva datos de las empresas
si la clave es igual a la del usuario.
¿Se percibe la contradicción?: No estás pidiendo que devuelva un u otro. Estás pidiendo sólo la de los usuarios, y relacionando a los usuarios con las empresas. Si el valor es uno u otro, sólo podría darte empresas si su ID es igual al de un usuario ( más allá de si el usuario pertenece o no a esa empresa, cosa que no está clara).
La vinculación con la tabla
usu_plataforma también es obligatoria, de modo que sólo devolverá registros
si el servicio tiene algún usuario y al mismo tiempo algún trabajador vinculado. De lo contrario no devolverá nada.
Por la descripción general de lo que estás vinculando tengo la impresión de que el modelado general de entidades y relaciones no está bien hecho, y si partes de un esquema mal planteado te vas a encontrar con problemas en las consultas todo el tiempo.
Por eso decía que era muy importante que postearas las estructuras de las tablas. La consulta parece mostrar inconsistencia en las relaciones que conspiran contra la misma, y eso sólo se ve en la definición del CREATE TABLE de las tablas involucradas.
PD. Si este post te parece largo, deberías ver otros posts que he escrito.