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

Select en 3 tablas

Estas en el tema de Select en 3 tablas en el foro de SQL Server en Foros del Web. Hola a todos, Una consulta , tengo que sacar de 3 tablas diferentes los siguientes campos Cod. Nombre Empleado Cod.Fac Facilidad 00001 ABARCA QUISPE KARINA ...
  #1 (permalink)  
Antiguo 22/09/2008, 11:45
 
Fecha de Ingreso: enero-2002
Ubicación: Callao - Perú
Mensajes: 1.127
Antigüedad: 22 años, 4 meses
Puntos: 0
Exclamación Select en 3 tablas

Hola a todos,

Una consulta , tengo que sacar de 3 tablas diferentes los siguientes campos

Cod. Nombre Empleado Cod.Fac Facilidad
00001 ABARCA QUISPE KARINA JESUSA 02 LOCCEL
00001 ABARCA QUISPE KARINA JESUSA 00 RESTRINGIDO

Este es el Select que uso:

Select c.codempleado, e.nomempleado, c.codrsc,c.rsc
from Emp_Codigos C inner join Emp_Empleados E
On c.CodEmpleado = e.CodEmpleado
ORDER BY c.CodEmpleado

Mi duda viene en lo siguiente: un empleado puede manejar varias facilidades, pero solo necesito que se muestre un registro con el Cod.Fac mas alto(Que en el ejemplo seria el 02) como podria construir el select?'

Gracias de antemano.
__________________
SaLuDoS dE:
PePeLuChO dEl PeRú PaRa El MuNdO
  #2 (permalink)  
Antiguo 22/09/2008, 15:03
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Select en 3 tablas

Buenas tardes Oye lo que debes hacer es obtener el valor maximo del campo que quieras obtener y los demas campos de la consulta deben estar agrupados
Prueba esto a ver si funciona:

Select c.codempleado, e.nomempleado, max(c.codrsc),c.rsc
from Emp_Codigos C inner join Emp_Empleados E
On c.CodEmpleado = e.CodEmpleado
Group BY c.CodEmpleado,e.nomempleado,c.rsc

Saludos...
  #3 (permalink)  
Antiguo 22/09/2008, 16:12
 
Fecha de Ingreso: enero-2002
Ubicación: Callao - Perú
Mensajes: 1.127
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Select en 3 tablas

no funca, aparte creo que falto detallar que el c.CodRsc es string pero igual he pasado la conversion a integer pero me trae los dos registros:

Select e.codempleado, e.nomempleado, max(convert(int,c.codrsc)),c.rsc
from Emp_Codigos C inner join Emp_Empleados E
On c.CodEmpleado = e.CodEmpleado
Group BY e.CodEmpleado,e.nomempleado,c.rsc,c.codrsc

y

Select e.codempleado, e.nomempleado, max(cast(c.codrsc as integer)),c.rsc
from Emp_Codigos C inner join Emp_Empleados E
On c.CodEmpleado = e.CodEmpleado
Group BY e.CodEmpleado,e.nomempleado,c.rsc,c.codrsc
__________________
SaLuDoS dE:
PePeLuChO dEl PeRú PaRa El MuNdO
  #4 (permalink)  
Antiguo 23/09/2008, 13:06
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Select en 3 tablas

Prueba esto(Recuerda que debes relacionar bien tus campos y tablas porque eso repercute en el Group by):

Select c.codempleado, e.nomempleado, max(cast(c.codrsc as int)),c.rsc
from Emp_Codigos C inner join Emp_Empleados E
On c.CodEmpleado = e.CodEmpleado
Group BY c.CodEmpleado,e.nomempleado,c.rsc
  #5 (permalink)  
Antiguo 23/09/2008, 14:07
 
Fecha de Ingreso: enero-2002
Ubicación: Callao - Perú
Mensajes: 1.127
Antigüedad: 22 años, 4 meses
Puntos: 0
Exclamación Respuesta: Select en 3 tablas

Igual no funciona, o seria mejor trabajarlo con cursores??

Gracias !
__________________
SaLuDoS dE:
PePeLuChO dEl PeRú PaRa El MuNdO
  #6 (permalink)  
Antiguo 23/09/2008, 14:50
Avatar de rj69  
Fecha de Ingreso: agosto-2008
Ubicación: Melipilla
Mensajes: 49
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Select en 3 tablas

mmm, por que no pruebas dejando tu primera consulta (donde traes casi todos los datos menos la factivilidad) en una temp, y luego en otra temp, dejas solo las max(factivilidad) de todos tus empleados, luego

realiza un select de ambas tablas haciendo un left o rigth (dependiendo donde coloques tu temp con datos) donde el usuario de una temp sea igual al usuario de la temp con las factivilidades.

espero esto te ayude,
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 05:21.