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

Buscar al trabajador de mayor edad de un departamento

Estas en el tema de Buscar al trabajador de mayor edad de un departamento en el foro de Bases de Datos General en Foros del Web. Tengo una tabla en la cual guardo el nombre de un trabajador, su edad, y su departamento (con un valor entero) Por ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 07/09/2018, 07:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 45
Antigüedad: 12 años, 6 meses
Puntos: 0
Buscar al trabajador de mayor edad de un departamento

Tengo una tabla en la cual guardo el nombre de un trabajador, su edad, y su departamento (con un valor entero)

Por ejemplo:

Código MySQL:
Ver original
  1. nombre   edad       departamento
  2. Pepito       22             1
  3. Manolo     45             1
  4. Laura        34             2
  5. Ismael       64              2
Mi objetivo es responder a esta pregunta.

¿Bucando a partir de un nombre (que sé que existe) como puedo saber si hay OTRO trabajador de mayor edad que por el que estoy buscando?

Si por ejemplo, busco a 'Pepito', sabre que trabaja en el departamento 1 y que tiene 22 años, y luego buscando por su departamento ordenando la columna edad de mayor a menor obtendré al trabajador de mas edad. De esta logica construyo esta sentencia.



SELECT * FROM trabajadores
WHERE
departamento = (SELECT departamento FROM trabajadores WHERE nombre = 'Pepito')
AND edad =
order by edad Desc limit 1



Pero tengo la sensación que se podría hacer de una manera mas clara y eficaz
  #2 (permalink)  
Antiguo 07/09/2018, 08:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Buscar al trabajador de mayor edad de un departamento

Podrias hacer algo como esto:

Código SQL:
Ver original
  1. SELECT * FROM trabajadores AS t1
  2. INNER JOIN(
  3. SELECT edad,departamento FROM trabajadores WHERE nombre='pepito') AS t2 ON (t1.departamento=t2.departamento AND t1.edad>t2.edad)

Este query regresaria valores si existe un trabajador de mayor edad al que estas buscando de caso contrario no regresaria nada
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/09/2018, 08:55
 
Fecha de Ingreso: octubre-2011
Mensajes: 45
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Buscar al trabajador de mayor edad de un departamento

El problema es que yo no quiero que me devuelva valores, en plural, lo que quiero es que me devuelve uno, si es que hay alguien mayor en ese departamento o no me devuelva nada si el trabajador por el que estoy buscando también es el de mayor edad en ese departamento
  #4 (permalink)  
Antiguo 07/09/2018, 12:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Buscar al trabajador de mayor edad de un departamento

valores, valor es lo mismo, solo quieres un valor entonces pon un top 1(eso quiere decir que hay alguien de mayor edad)

Código SQL:
Ver original
  1. SELECT top 1 * FROM trabajadores AS t1
  2. INNER JOIN(
  3. SELECT edad,departamento FROM trabajadores WHERE nombre='pepito') AS t2 ON (t1.departamento=t2.departamento AND t1.edad>t2.edad)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: edad, mayor, tabla
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 17:09.