Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/05/2011, 09:04
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta atragantada

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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)