Saltar al contenido

Una tabla consigo misma

SQL · Unidad 8: Más uniones

Otra base, una empresa de nueve personas. Su tabla empleados guarda el nombre, el puesto y el salario mensual de cada persona, y una columna jefe_id. ¿Quién es el jefe de cada una?

jefe_id es una clave foránea, y apunta a la misma tabla en la que está. El jefe de Rita es el 2, y el 2 es Marco, dos filas más arriba. Carmen dirige la empresa y no tiene jefe.

SELECT id, nombre, puesto, jefe_id
FROM empleados
ORDER BY id;

Devuelve

idnombrepuestojefe_id
1CarmenDirectoraNULL
2MarcoGerente1
3PaulaGerente1
4RitaVendedora2
5NadiaVendedora2
6SamuelProgramador3
7LidiaProgramadora3
8FabioProgramador3
9GretaIlustradora1

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Opción múltiple

    En la fila de Fabio, jefe_id vale 3. ¿Dónde se busca ese 3 para saber quién es su jefe?

  2. 2. Completa el código

    ¿Quién dirige a quienes programan? En puesto, unos dicen Programador y otra Programadora, y el LIKE se queda con los tres. Completa el ON.

  3. 3. Predice la salida

    La misma unión contesta la pregunta al revés. Marco es el empleado 2. Su jefa es Carmen, y él es el jefe de Rita y de Nadia. ¿Qué devuelve esta consulta?

  4. 4. Encuentra el bug

    Recursos humanos compara el salario de cada vendedora con el de su jefe, que es Marco y gana 3800. La consulta corre sin error y dice que el jefe de Nadia gana 2100. ¿Qué línea tiene el problema?

  5. 5. Ordena las líneas

    ¿A quién dirige cada gerente? Ordena la consulta que da el nombre del gerente y el de cada persona a su cargo, por gerente y, dentro de cada uno, por empleado. Sobran dos líneas.

  6. 6. Encuentra el bug

    La lista de cada empleado con su jefe. Aquí SQL contesta ambiguous column name y señala a e.nombre, que lleva su alias delante. ¿Qué línea tiene el problema?

  7. 7. Predice la salida

    Con la copia de los jefes en el FROM, la misma unión cuenta cuánta gente tiene cada quien a su cargo. jefe_id apunta al jefe directo. A Carmen le apuntan Marco, Paula y Greta. A Marco, Rita y Nadia. A Paula, Samuel, Lidia y Fabio. ¿Qué devuelve esta consulta para los empleados del 1 al 4, que son Carmen, Marco, Paula y Rita?

  8. 8. Ordena las líneas

    ¿Quién no dirige a nadie? Ordena la consulta que da sus nombres, en orden alfabético. Sobran dos líneas.

  9. 9. Predice la salida

    Una tabla puede entrar en una consulta las veces que haga falta. En esta entra tres, y jj es la copia donde se lee al jefe del jefe. Marco es el empleado 2, y su jefa es Carmen, que no tiene jefe. Rita es la 4, y su jefe es Marco. ¿Qué devuelve esta consulta?

  10. 10. Escribe el código

    El directorio de la empresa. Escribe una consulta con tres columnas en este orden, el nombre de cada persona, su puesto y el nombre de su jefe, que diga nadie para quien no lo tiene. Tienen que salir las nueve, por nombre en orden alfabético.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →