Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

LEFT JOIN de una tabla a varias

Estas en el tema de LEFT JOIN de una tabla a varias en el foro de SQL Server en Foros del Web. Hola a todos Espero me puedan ayuar, tengo 16 tablas las cuales las quiero unir con un LEFT JOIN , dos de estas tablas son ...
  #1 (permalink)  
Antiguo 25/03/2011, 13:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Pregunta LEFT JOIN de una tabla a varias

Hola a todos

Espero me puedan ayuar, tengo 16 tablas las cuales las quiero unir con un LEFT JOIN , dos de estas tablas son (empleados y claves) las otras 14 tiene un idempleado y un idclave,

La consulta que dese hacer es la siguiente:
SELECT
catalogo_empleados.nombre_empleado, catalogo_claves.clave,

SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',

SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
FROM

catalogo_empleados
LEFT JOIN [1Marzo] on catalogo_empleados.ID=[1Marzo].ID_empleado
LEFT JOIN [2Marzo] on catalogo_empleados.ID=[2Marzo].ID_empleado

LEFT JOIN catalogo_claves on catalogo_claves.clave=[1Marzo].clave
LEFT JOIN catalogo_claves on catalogo_claves.clave=[2Marzo].clave

group by
catalogo_empleados.nombre_empleado,
catalogo_claves.clave

Este es el resultado:
Los objetos "catalogo_claves" y "catalogo_claves" en la cláusula FROM tienen los mismos nombres expuestos. Use nombres de correlación para distinguirlos.

No puedo usar 2 veces la misma tabla en un JOIN , como se puede resolver??

Última edición por jamz_25; 25/03/2011 a las 14:34
  #2 (permalink)  
Antiguo 25/03/2011, 14:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 5 meses
Puntos: 774
Respuesta: LEFT JOIN de una tabla a varias

Código SQL:
Ver original
  1. SELECT
  2. catalogo_empleados.nombre_empleado, catalogo_claves.clave,
  3.  
  4. SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',
  5.  
  6. SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
  7. FROM
  8.  
  9. catalogo_empleados
  10. LEFT JOIN [1Marzo] ON catalogo_empleados.ID=[1Marzo].ID_empleado
  11. LEFT JOIN [2Marzo] ON catalogo_empleados.ID=[2Marzo].ID_empleado
  12.  
  13. LEFT JOIN catalogo_claves AS catalogo1 ON catalogo1.clave=[1Marzo].clave
  14. LEFT JOIN catalogo_claves AS catalogo2 ON catalogo2.clave=[2Marzo].clave
  15.  
  16. GROUP BY
  17. catalogo_empleados.nombre_empleado,
  18. catalogo1.clave

Creo que con eso resulves tu problema :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/03/2011, 15:03
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: LEFT JOIN de una tabla a varias

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. SELECT
  2. catalogo_empleados.nombre_empleado, catalogo_claves.clave,
  3.  
  4. SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',
  5.  
  6. SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
  7. FROM
  8.  
  9. catalogo_empleados
  10. LEFT JOIN [1Marzo] ON catalogo_empleados.ID=[1Marzo].ID_empleado
  11. LEFT JOIN [2Marzo] ON catalogo_empleados.ID=[2Marzo].ID_empleado
  12.  
  13. LEFT JOIN catalogo_claves AS catalogo1 ON catalogo1.clave=[1Marzo].clave
  14. LEFT JOIN catalogo_claves AS catalogo2 ON catalogo2.clave=[2Marzo].clave
  15.  
  16. GROUP BY
  17. catalogo_empleados.nombre_empleado,
  18. catalogo1.clave

Creo que con eso resulves tu problema :)

Saludos!

Gracias!!, pero ahora me dice:

El identificador formado por varias partes "catalogo_claves.clave" no se pudo enlazar.,, alguna otra idea?
  #4 (permalink)  
Antiguo 25/03/2011, 15:13
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 5 meses
Puntos: 774
Respuesta: LEFT JOIN de una tabla a varias

Código SQL:
Ver original
  1. SELECT
  2. catalogo_empleados.nombre_empleado, catalogo1.clave,
  3.  
  4. SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',
  5.  
  6. SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
  7. FROM
  8.  
  9. catalogo_empleados
  10. LEFT JOIN [1Marzo] ON catalogo_empleados.ID=[1Marzo].ID_empleado
  11. LEFT JOIN [2Marzo] ON catalogo_empleados.ID=[2Marzo].ID_empleado
  12.  
  13. LEFT JOIN catalogo_claves AS catalogo1 ON catalogo1.clave=[1Marzo].clave
  14. LEFT JOIN catalogo_claves AS catalogo2 ON catalogo2.clave=[2Marzo].clave
  15.  
  16. GROUP BY
  17. catalogo_empleados.nombre_empleado,
  18. catalogo1.clave

Prueba asi :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/03/2011, 15:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: LEFT JOIN de una tabla a varias

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. SELECT
  2. catalogo_empleados.nombre_empleado, catalogo1.clave,
  3.  
  4. SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',
  5.  
  6. SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
  7. FROM
  8.  
  9. catalogo_empleados
  10. LEFT JOIN [1Marzo] ON catalogo_empleados.ID=[1Marzo].ID_empleado
  11. LEFT JOIN [2Marzo] ON catalogo_empleados.ID=[2Marzo].ID_empleado
  12.  
  13. LEFT JOIN catalogo_claves AS catalogo1 ON catalogo1.clave=[1Marzo].clave
  14. LEFT JOIN catalogo_claves AS catalogo2 ON catalogo2.clave=[2Marzo].clave
  15.  
  16. GROUP BY
  17. catalogo_empleados.nombre_empleado,
  18. catalogo1.clave

Prueba asi :)

Saludos!
Este funciona sin errores pero solamente junta las claves de la tabla [1Marzo] y no las claves de [2Marzo]
  #6 (permalink)  
Antiguo 25/03/2011, 15:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 5 meses
Puntos: 774
Respuesta: LEFT JOIN de una tabla a varias

Código SQL:
Ver original
  1. SELECT
  2. catalogo_empleados.nombre_empleado, catalogo1.clave,catalogo2.clave,
  3.  
  4. SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',
  5.  
  6. SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
  7. FROM
  8.  
  9. catalogo_empleados
  10. LEFT JOIN [1Marzo] ON catalogo_empleados.ID=[1Marzo].ID_empleado
  11. LEFT JOIN [2Marzo] ON catalogo_empleados.ID=[2Marzo].ID_empleado
  12.  
  13. LEFT JOIN catalogo_claves AS catalogo1 ON catalogo1.clave=[1Marzo].clave
  14. LEFT JOIN catalogo_claves AS catalogo2 ON catalogo2.clave=[2Marzo].clave
  15.  
  16. GROUP BY
  17. catalogo_empleados.nombre_empleado,
  18. catalogo1.clave, catalogo2.clave

Prueba con ese :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 25/03/2011, 17:53
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: LEFT JOIN de una tabla a varias

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. SELECT
  2. catalogo_empleados.nombre_empleado, catalogo1.clave,catalogo2.clave,
  3.  
  4. SUM(isnull([1Marzo].[26],0)) + SUM(isnull([1Marzo].[27],0)) + SUM(isnull([1Marzo].[28],0)) + SUM(isnull([1Marzo].[1],0)) AS '10 Marzo',
  5.  
  6. SUM(isnull([2Marzo].[11],0)) + SUM(isnull([2Marzo].[12],0)) + SUM(isnull([2Marzo].[13],0))+ SUM(isnull([2Marzo].[14],0)) AS '25 Marzo'
  7. FROM
  8.  
  9. catalogo_empleados
  10. LEFT JOIN [1Marzo] ON catalogo_empleados.ID=[1Marzo].ID_empleado
  11. LEFT JOIN [2Marzo] ON catalogo_empleados.ID=[2Marzo].ID_empleado
  12.  
  13. LEFT JOIN catalogo_claves AS catalogo1 ON catalogo1.clave=[1Marzo].clave
  14. LEFT JOIN catalogo_claves AS catalogo2 ON catalogo2.clave=[2Marzo].clave
  15.  
  16. GROUP BY
  17. catalogo_empleados.nombre_empleado,
  18. catalogo1.clave, catalogo2.clave

Prueba con ese :)

gracias, pero el resultado que espero de este query seria el siguiente

Empleado | Clave | [1Marzo] |[2Marzo]

Adrian Avila Nava | 3400-000 | 0 | 7
Adrian Avila Nava | 4400-000 | 0 | 2
Adrian Avila Nava | 5900-003 | 1 | 0
Adrian Avila Nava | 8100-000 | 2 | 0
Alberto Lares Roacho | 0700-002 | 0 | 2
Alberto Lares Roacho | 0700-003 | 0 | 2
Alberto Lares Roacho | 1200-000 | 0 | 0
Alberto Lares Roacho | 5900-002 | 0 | 5

Creen que esto sea posible??
  #8 (permalink)  
Antiguo 28/03/2011, 07:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 5 meses
Puntos: 774
Respuesta: LEFT JOIN de una tabla a varias

De que es posible es posible :), haber pasa algunos datos de tus tablas para ver como se podria sacar lo que quieres :).

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.