Rullst AcademyRullst Academy/Lição
Bancos de dados e SQL I · Lição 07 / 12

Relacionar sem duplicar conclusões

Usar chaves, INNER JOIN e LEFT JOIN e reconhecer multiplicidade.

Trilhas de aprendizado18 min

Vamos descobrir juntos

  1. 1

    loans.kit_id aponta para kits.id: muitos empréstimos para um material. A FK habilitada garante existência do material, mas não que a soma emprestada cabe no estoque. Essa regra precisa de lógica adicional.

  2. 2

    JOIN combina linhas pela condição ON. INNER JOIN mostra correspondências. O material 1 tem dois empréstimos e aparece duas vezes; isso é a multiplicidade do modelo. Uma condição incorreta pode multiplicar linhas sem relação útil.

  3. 3

    LEFT JOIN conserva materiais sem empréstimos, com NULL à direita. Para manter todos e só relacionar empréstimos abertos, coloque l.returned IS NULL em ON. WHERE pode eliminar linhas depois da junção; teste também um material com apenas empréstimos devolvidos.

  4. 4

    Aliases k e l mostram a origem das colunas. Preveja por que Nova tem loan_id nulo. Troque LEFT JOIN por JOIN, execute e explique qual informação desapareceu.

Sua bancada de dados

Nosso modelo: kits.id ← loans.kit_id. Um material pode ter vários empréstimos; nomes podem repetir. Só usamos dados fictícios.

Preveja antes de abrir a referência. Ela mostra o resultado verificado do exemplo original, não executa seu texto. Para executar suas alterações, use o kit no computador.

-- Relacionar sem duplicar conclusões
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 com o resultado de referência
[
  {
    "columns": [
      "id",
      "label",
      "loan_id"
    ],
    "rows": [
      [
        1,
        "Orbit",
        1
      ],
      [
        1,
        "Orbit",
        2
      ],
      [
        2,
        "Sprout",
        3
      ],
      [
        3,
        "Orbit",
        4
      ],
      [
        4,
        "Nova",
        null
      ]
    ]
  }
]

No terminal da pasta extraída, execute o comando. Use python3 no macOS/Ubuntu ou py se esse for seu launcher no Windows. Cada execução começa em memória; leia README.md para salvar arquivos e ensaiar recuperação.

python lab.py run lesson.sql
Meus arquivos e GitHub

O editor guarda seu rascunho .sql neste navegador. Baixe a edição e substitua lesson.sql no kit; no projeto final, availability.sql. O ZIP continua sendo o modelo original. Publicar no GitHub envia apenas o arquivo confirmado, sem executar SQL ou enviar o banco.

Links oficiais e próximo passo

✦
SUA MISSÃO

Usar chaves, INNER JOIN e LEFT JOIN e reconhecer multiplicidade.

Agora é a sua vez

Oficina de descobertas

Leia, preveja e confira

Usar chaves, INNER JOIN e LEFT JOIN e reconhecer multiplicidade.
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

Qual junção mantém materiais sem empréstimos?

Preciso de uma pista

JOIN combina linhas pela condição ON. INNER JOIN mostra correspondências. O material 1 tem dois empréstimos e aparece duas vezes; isso é a multiplicidade do modelo. Uma condição incorreta pode multiplicar linhas sem relação útil.

Carregando sua jornada…

Leve com você

Devolva os empréstimos de id 1 na mesma execução e compare filtros em ON e WHERE. Guarde um exemplo que explique a diferença.

No seu ritmo

Meus arquivos e GitHub

Toda lição pode virar um registro seu: código, anotações ou um plano de prática. Guardar um arquivo no GitHub é opcional e não altera seu XP.

Manual do aluno

O editor e os downloads abrem quando esta lição estiver liberada para sua conta. Confira o acesso abaixo ou volte ao mapa da trilha.

Conferindo seu acesso à lição…

Rullstpetbot

A IA pode errar. Confira no material da lição.