Rullst AcademyRullst Academy/Lección
Bases de datos y SQL I · Lección 07 / 12

Relacionar sin duplicar conclusiones

Usar claves, INNER JOIN y LEFT JOIN y reconocer multiplicidad.

Rutas de aprendizaje18 min

Vamos a descubrir juntos

  1. 1

    loans.kit_id apunta a kits.id: muchos préstamos para un material. La FK habilitada garantiza existencia, no que la suma quepa en existencias. Esa regla requiere lógica adicional.

  2. 2

    JOIN combina filas mediante ON. INNER JOIN muestra coincidencias. El material 1 tiene dos préstamos y aparece dos veces: es multiplicidad. Una condición incorrecta puede multiplicar filas sin relación útil.

  3. 3

    LEFT JOIN conserva materiales sin préstamos, con NULL a la derecha. Para conservar todos y relacionar solo abiertos, pon l.returned IS NULL en ON. WHERE puede eliminar filas después; prueba también un material con solo préstamos devueltos.

  4. 4

    Los alias k y l indican origen. Predice por qué Nova tiene loan_id nulo. Cambia LEFT JOIN por JOIN, ejecuta y explica qué desapareció.

Tu mesa de datos

Nuestro modelo: kits.id ← loans.kit_id. Un material puede tener varios préstamos; nombres pueden repetirse. Solo usamos datos ficticios.

Predice antes de abrir la referencia. Muestra salida verificada del ejemplo original, no ejecuta tu texto. Ejecuta cambios con el kit en tu computadora.

-- Relacionar sin duplicar conclusiones
SELECT k.id, k.label, l.id AS loan_id FROM kits AS k LEFT JOIN loans AS l ON l.kit_id=k.id ORDER BY k.id, l.id;
Comparar con la salida de referencia
[
  {
    "columns": [
      "id",
      "label",
      "loan_id"
    ],
    "rows": [
      [
        1,
        "Orbit",
        1
      ],
      [
        1,
        "Orbit",
        2
      ],
      [
        2,
        "Sprout",
        3
      ],
      [
        3,
        "Orbit",
        4
      ],
      [
        4,
        "Nova",
        null
      ]
    ]
  }
]

Ejecuta el comando en la carpeta extraída. Usa python3 en macOS/Ubuntu o py si es tu launcher Windows. Cada ejecución empieza en memoria; lee README.md para guardar archivos y practicar recuperación.

python lab.py run lesson.sql
Mis archivos y GitHub

El editor guarda tu borrador .sql en este navegador. Descárgalo y sustituye lesson.sql en el kit; en el proyecto final, availability.sql. El ZIP conserva el modelo original. GitHub envía solo el archivo confirmado, sin ejecutar SQL ni enviar la base.

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Usar claves, INNER JOIN y LEFT JOIN y reconocer multiplicidad.

Ahora te toca

Taller de descubrimientos

Lee, predice y comprueba

Usar claves, INNER JOIN y LEFT JOIN y reconocer multiplicidad.
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Qué unión conserva materiales sin préstamos?

Necesito una pista

JOIN combina filas mediante ON. INNER JOIN muestra coincidencias. El material 1 tiene dos préstamos y aparece dos veces: es multiplicidad. Una condición incorrecta puede multiplicar filas sin relación útil.

Cargando tu camino…

Llévatelo contigo

Devuelve los préstamos de id 1 en la misma ejecución y compara ON y WHERE. Guarda un ejemplo que explique la diferencia.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.