none
Subconsultas RRS feed

  • Pregunta

  • Tengo esta tabla .

     y debo realizar varias subconsultas por ejemplo:

    1. Obtener los nombre de los empleados del departamento 30 que son jefes directos de algún empleado de la empresa, indicando de cuantos empleados son jefes. 

    2. Realizar un listado de los empleados cuyo oficio es EMPLEADO, que incluirá los números de empleado, los apellidos y los salarios anuales, sabiendo que el salario anual es el salario multiplicado por 14, e incluyendo en este listado el nombre del director del empleado. 

    favor ayudarme con la sentencia ya que he intentado de varias formas y no me da.


    Alexander Jimenez

    sábado, 17 de septiembre de 2016 15:02

Respuestas

  • Creo que no hace falta recursividad. La clave está en que se pide los empleados que son jefes DIRECTOS, con lo que basta con examinar directamente el campo "Director". Indico la solución del 1 con un Join, que creo que queda más limpio que con una subconsulta.

    Select e2.Emp_no, max(e2.Apellido) as apellido, Count(*) as numEmpleados from Empleados e1

    join empleados e2 on e1.Director=e2.Emp_no

    where e2.dep_no=30

    group by e2.Emp_no

    sábado, 17 de septiembre de 2016 15:18

Todas las respuestas

  • AJ Designs,

    Dudo que el problema lo resuelvas mediante sub-consultas, el caso que presentas son ejercicios típicos de recursividad.

    Muéstranos tus avances -que por algo son las tareas- y sobre eso te echamos una mano.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 17 de septiembre de 2016 15:07
  • Creo que no hace falta recursividad. La clave está en que se pide los empleados que son jefes DIRECTOS, con lo que basta con examinar directamente el campo "Director". Indico la solución del 1 con un Join, que creo que queda más limpio que con una subconsulta.

    Select e2.Emp_no, max(e2.Apellido) as apellido, Count(*) as numEmpleados from Empleados e1

    join empleados e2 on e1.Director=e2.Emp_no

    where e2.dep_no=30

    group by e2.Emp_no

    sábado, 17 de septiembre de 2016 15:18
  • Alberto ya puso la solucion del primero. En cuanto al segundo, creo deberias intentar por ti mismo porque no es tan complicado como se lee.

    select
        A.emp_no, A.apellido, A.salario * 14 as salario_anual,
        (select B.apellido from tuTabla as B where B.emp_no = A.director) as apellido_director
    from
        tuTabla as A
    where
        oficio = 'empleado';



    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    lunes, 19 de septiembre de 2016 12:32