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. Hola amigos, tengo un ejercicio que no se cómo hacerlo. El ejercicio tiene como objetivo hacer una consulta. Tengo dos tablas: ->Empleados * NSS Nombre ...
  #1 (permalink)  
Antiguo 11/07/2012, 21:39
Avatar de mikolbe  
Fecha de Ingreso: octubre-2010
Mensajes: 104
Antigüedad: 13 años, 6 meses
Puntos: 2
Consulta

Hola amigos, tengo un ejercicio que no se cómo hacerlo. El ejercicio tiene como objetivo hacer una consulta.
Tengo dos tablas:
->Empleados
* NSS
Nombre
FechaNac
Direccion
NroDepto
Sueldo


-> Departamentos
* NroDepto (Este campo está relacionado en la tabla 'Empleados')
Nombre
GteDepto (este campo está relacionado con NSS, "Un gerente es un Empleado")



La letra del ejercicio es la siguiente:
"Obtener los datos del Departamento cuyo Gerente tenga el
sueldo mas alto."

La consulta que yo encontré es la siguiente, si bien funciona no se si para una semana de curso de DB pueda llegar a realizar esto. hay alguna otra consulta que me devuelva lo que pide la letra, usando MAX(), GROUP BY, HAVING. Algo mas sencillo?

Dejo mi Consulta:
Select * From Departamentos Where gtedepto =
(Select Top 1 Nss From Empleados
Where Nss In (Select gteDepto From Departamentos)
Order By Sueldo Desc)


Gracias
<<[[Mikol Be]]>>
  #2 (permalink)  
Antiguo 12/07/2012, 07:33
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, 8 meses
Puntos: 774
Respuesta: Consulta

sip usando joins y un max :)


select * from Departamentos as D
inner join empleados as E on (d.nrodepto=E.nrodepto)
where sueldo=(select max(sueldo) from empleados)


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 14/07/2012, 09:09
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta

Supongo que si es un ejercicio- buscas una solución simple, aunque existen soluciones mas eficientes y tecnicos.
Si ya conoses los operadores Inner Join, Order By y Top- esto es lo que buscas:

Select Top 1 Departamento.*
From Departamentos
Inner Join Empleados
On Departamentos.GteDepto=Empleados.NSS
Order By Sueldo Desc;
  #4 (permalink)  
Antiguo 14/07/2012, 17:05
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Consulta

Hola GeriReshef, la solucion que planteaste es correcta pero cual seria una mas eficiente para el caso planteado? gracias
  #5 (permalink)  
Antiguo 14/07/2012, 22:18
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta

El rendimiento depende en la construcción de las tablas, en los indices, en el numero de las filas etc. No hay respuesta predeterminada, y si es necesario- debes comparar las planes de ejecución.

La respuesta de Libras es absolutamente correcta, pero me imagino que no has estudiado todavia acerca de subconsultas; pero si entendes su sugerencia - esa es muy buena oportunidad de mejorar tus habilidades.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #6 (permalink)  
Antiguo 15/07/2012, 20:24
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Consulta

Ok, GeriReshef la diferencia que vos no usaste subconsulta y se que al usarla quita performance en la ejecucion de la query... me gustaria que me pases otra forma de hacerlo, te digo que mi solucion coincide con la que expusiste vos. Gracias
  #7 (permalink)  
Antiguo 16/07/2012, 02:18
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta

Otra opción-
select *
From Departamentos as D
inner join (select Top 1 *
From Empleados
Order By sueldo Desc) E
On D.nrodepto=E.nrodepto;

La gran diferencia probablemente entre mi consulta y la de Libras es que en la suya hay tres Table Scans (tres veces Select) y en la mia solamente dos. Menciono "probablemente" porque no es el unico factor que influye el rendimiento.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #8 (permalink)  
Antiguo 16/07/2012, 08:24
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, 8 meses
Puntos: 774
Respuesta: Consulta

Lo de las subconsultas en el performance va aunando cuando tu suconsulta no tiene indices o esta mal estructurada(digamos un select * from tabla), es cuando puede afectar el performace, la otra cosa es ver el plan de ejecucion para saber cual es el camino mas optimo....no quiere decir que cualquier subconsulta este afectando el performance

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 16/07/2012, 08:44
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

¿Porque no utilizan TUNING PERFORMANCE para revisar sus consultas?
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 16/07/2012, 12:20
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Consulta

Cita:
Iniciado por iislas Ver Mensaje
¿Porque no utilizan TUNING PERFORMANCE para revisar sus consultas?
iislas donde podría obtener esa aplicación?
  #11 (permalink)  
Antiguo 16/07/2012, 13:17
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

No es ninguna aplicacion, es un servicio que te da SQL Server.

Estando en tu analizador de consultas, seleccionas tu consultas, vas a: QUERY ->

ANALYZE QUERY IN DATABASE TUNING ADVISOR
__________________
MCTS Isaias Islas
  #12 (permalink)  
Antiguo 16/07/2012, 16:50
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Consulta

Gracias iislas, tenes idea donde puedo encontrar un tutorial en español para poder utilizarlo?
  #13 (permalink)  
Antiguo 17/07/2012, 08:07
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, 8 meses
Puntos: 774
Respuesta: Consulta

te recomiendo que mejor busques tutoriales o informacion en ingles que hay mucho mas que lo que puedes encontrar en español...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 17/07/2012, 09:33
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

A ver si esto ayuda un poco:

Revisión en forma directa en el navegador (browser)
SQL Server 2008 R2

http://technet.microsoft.com/es-es/l...(SQL.105).aspx

SQL Server 2008

http://technet.microsoft.com/es-es/l.../ms130214.aspx

SQL Server 2005
http://technet.microsoft.com/es-es/l...4(SQL.90).aspx

SQL Server 2005 Express Edition
http://technet.microsoft.com/es-es/l...6(SQL.90).aspx

SQL Server Compact Edition
http://technet.microsoft.com/es-es/l...3(SQL.90).aspx

Descargar:

Libros en Pantalla de Microsoft SQL Server 2008 R2 (Mayo 2010)
http://www.microsoft.com/downloads/d...displaylang=es

Libros en pantalla de Microsoft SQL Server 2008 (Julio 2009)
http://www.microsoft.com/downloads/d...8-0a98145bcb97

Libros en pantalla de SQL Server 2005 (Noviembre 2008)
http://www.microsoft.com/downloads/d...displaylang=es

Libros en pantalla y ejemplos de Microsoft SQL Server Compact 3.5 (Marzo 2008)
http://www.microsoft.com/downloads/d...displayLang=es

Libros en pantalla de SQL Server 2000 (Junio 2007)
http://www.microsoft.com/downloads/d...displayLang=es
__________________
MCTS Isaias Islas

Etiquetas: select, tabla, campos
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 19:30.