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

Consulta

Estas en el tema de Consulta en el foro de SQL Server en Foros del Web. amigos me acabo de bloquear, seguro es porque ya son la 1pm y es hora del almuerzo... tengo una consulta Tabla Empleado ID, Nombre 1, ...
  #1 (permalink)  
Antiguo 27/07/2010, 12:10
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Consulta

amigos me acabo de bloquear, seguro es porque ya son la 1pm y es hora del almuerzo... tengo una consulta

Tabla Empleado
ID, Nombre
1, AAAAA
2, BBBBB
3, CCCCC

Tabla Cargos
ID, Cargo, Periodo
1, Jefe, 2005
1, Gerente, 2010
2, Asistente, 2006
3, Asistente, 2004
3, Supervisor, 2006
3, Coordinador, 2006
3, Jefe, 2007
3, Gerente, 2010

Entonces loq ue quiero que salga es la lista de empleados con su cargo... pero con el Ultimo Cargo... obtenido... No se que me pasa que me acabo de bloquear!!!

Resultado
ID, Nombre, Cargo
1, AAAAA, Gerente
2, BBBBB, Asistente
3, CCCCC, Gerente

Den luz a mi problemaaa :D
__________________
Odio verte ir, pero me encanta verte yendo :)
  #2 (permalink)  
Antiguo 27/07/2010, 12:21
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta

Si no me equivoco es mas o menos asi:
Código SQL:
Ver original
  1. SELECT E.ID, E.Nombre, C.Cargo
  2. FROM Empleado E
  3. LEFT JOIN (
  4.     SELECT P.*
  5.     FROM Periodo P
  6.     INNER JOIN (
  7.         SELECT ID,MAX(Periodo)Periodo FROM Cargos GROUP BY ID
  8.     ) T ON P.ID = T.ID AND P.Periodo = T.Periodo
  9. ) C ON E.ID = C.ID
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 27/07/2010, 12:32
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Consulta

Solo hay que controlas los NULL, en aquellos empleados que no figuran en los puestos.

Excelente.
  #4 (permalink)  
Antiguo 02/08/2010, 11:38
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Consulta

si amigos... algo asi estoy haciendo... despues de mis 5 dias de vacaciones... por Fiesta Patrias aqui en Peru... sigo con este problemita.. Flaviovich... no tengo ninguna tabla Periodo... estuve haciendole con unos UNION ALL y con INTERSEC, MINUS jajaja pero no me sale... ayuda!!!
__________________
Odio verte ir, pero me encanta verte yendo :)
  #5 (permalink)  
Antiguo 02/08/2010, 12:01
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta

Código SQL:
Ver original
  1. SELECT E.ID, E.Nombre, C.Cargo
  2. FROM Empleado E
  3. LEFT JOIN (
  4.     SELECT C.*
  5.     FROM Cargos C
  6.     INNER JOIN (
  7.         SELECT ID,MAX(Periodo)Periodo FROM Cargos GROUP BY ID
  8.     ) T ON C.ID = T.ID AND C.Periodo = T.Periodo
  9. ) C ON E.ID = C.ID
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 02/08/2010, 15:06
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Consulta

claro lo hice casi lo mismo
creo que es lo mismo...
Código SQL:
Ver original
  1. SELECT E.ID, E.Nombre, C.Cargo
  2. FROM Empleado E
  3. LEFT JOIN   (   SELECT ID,  MAX(Periodo)Periodo
  4.                 FROM Cargos
  5.                 GROUP BY ID                    
  6.             )   C ON E.ID = C.ID
  7. LEFT JOIN CARGOS T ON C.ID = T.ID AND C.Periodo = T.Periodo
probare tu consulta y te aviso :D
__________________
Odio verte ir, pero me encanta verte yendo :)

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:42.