Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/12/2015, 09:34
miky77
 
Fecha de Ingreso: diciembre-2015
Ubicación: Bolivia
Mensajes: 1
Antigüedad: 8 años, 4 meses
Puntos: 0
Consulta de 3 tablas

Hola un favor necesito hacer una consulta de 3 tablas (Empleado, Dato y Atributo) Donde la Tabla empleado tiene los datos personales del empleado y su clave principal es el Ci, La tabla Dato tiene "Valor", "fKEmpleado" (llave foránea a a la tabla Empleado), "fkAtributo" (Llave foránea a la tabla Atributo) y como llave principal el "Id"....... Mi tabla Atributo tiene "NombreAtributo" y el "IdAtributo" como llave principal....
Lo que deseo hacer una consulta e las 3 tablas que aparezcan todos los nombres de atributo que existan con su respectivo valor para cada Empleado y si alguno tiene valor null que también aparezca, por ejemplo:

Código SQL:
Ver original
  1. --Empleado
  2. Ci          |  Nombre
  3. 11111      |  Carlos
  4. 22222      |  Ana
  5. 33333      |  Juan
  6.  
  7. -- Dato
  8. Id  |  Valor      |   fkEmpleado   |   fkAtributo
  9. 1   |  80        |  11111          |   2
  10. 2   |  M         |   22222         |    1
  11.  
  12. --Atributo
  13. IdAtributo  |  NombreAtributo
  14.        1    |  Talla
  15.         2   |  Peso
Esas serían mis 3 tablas con algunos datos y lo que yo quiero que muestre sería lo siguiente:
Código SQL:
Ver original
  1. NombreAtributo   |   Valor   |   Ci
  2.         Talla    |   "null"  | 11111
  3.         Peso     |   80      | 11111
  4.         Talla    |     M     | 22222
  5.         Peso     |   "null"  | 22222
  6.         Talla    |   "null"  | 33333
  7.         Peso     |   "null"  | 33333
Es decir todos los empleados con sus distintos atributos y sus valores (tengan un valor asignado o no)

Probé con varias consultas y esta es la que mas se acerca que me muestra la lista pero no muestra los valores nulos de los atributos que ya se asignaron a otros empleados, en el anterior ejemplo no mostraría la talla y peso de Juan:
Código SQL:
Ver original
  1. SELECT
  2. dbo.Dato.Valor,
  3. dbo.Atributo.NombreAtributo,
  4. dbo.Empleado.Ci
  5. FROM Empleado,
  6. dbo.Atributo
  7. FULL JOIN  dbo.Dato ON dbo.Dato.FkAtributo = dbo.Atributo.IdAtributo
  8. WHERE Valor IS NULL OR Ci=FkEmpleado

Muchas gracias

Última edición por gnzsoloyo; 13/12/2015 a las 10:02