Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

POSSIVEL CORREÇÃO

A atividade solicita para que seja exibido apenas os empréstimos sem clientes atibuídos. A sáida esperada mostra o contrário. A query do instrutor faz uso de um RIGHT JOIN que é anulado posteriormente na clausula WHERE. Não existe empréstimo sem cliente atribuido e a query do instrutor aparentemente está incorreta, gostaria de saber se ao setar o campo 'id_cliente' do empréstimo 'E01' para NULL e utilizar a query que enviarei, a atividade estará correta:

SELECT 
    clien.nome AS 'cliente',
    empst.tipo AS 'tipoEmprestimo',
    empst.valor AS 'valor',
    empst.status AS 'status'
FROM tabelaClientes AS clien
RIGHT JOIN tabelaEmprestimo AS empst ON (clien.id_cliente=empst.id_cliente)
WHERE clien.nome IS NULL;

Caso haja algum erro, gostaria de saber o erro e o por que esta errado por gentileza.

2 respostas
solução!

Oi, Arthur! Tudo bem?

Agradeço por nos trazer esse ponto de atenção. Realmente a atividade se encontrava um pouco confusa. Ela foi reavaliada e editada, caso queira ver para refazer a atividade, acesse a aula Faça como eu fiz: identificando empréstimos sem clientes associados.

Sobre o seu código, está tecnicamente certo. Não retornará nenhum erro, mas também não retornará nada. Pois na base de dados não contém nenhum empréstimo sem cliente associado.

Os JOINS, são importantes para combinar dados de várias tabelas como vimos em aula. E temos um mapa mental que pode nos ajudar a aprofundar nesse conteúdo, veja:

A imagem é um diagrama de Venn intitulado "SQL Joins", com sete círculos representando diferentes tipos de junções em SQL. Cada par de círculos representa as tabelas A e B, com áreas sombreadas em azul indicando os dados incluídos

Resumo

  • Left Join: inclui todos os registros de A e os correspondentes de B (se houver).
  • Right Join: inclui todos os registros de B e os correspondentes de A (se houver).
  • Full Outer Join: Inclui todos os registros de A e B, com ou sem correspondência.
  • Inner Join: mais conhecido, inclui registros que são comuns em A e B.
  • Left Join Excluding Inner Join: registros de A que não têm correspondência em B.
  • Right Join Excluding Inner Join: registros de B que não têm correspondência em A.
  • Full Outer Join Excluding Inner Join: registros de A e B que não têm correspondência entre si.

Espero ter ajudado e caso queira compartilhar suas atividades ou mais sugestões, fique à vontade. A Alura preza muito por essa interação.

Até mais, Arthur!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!

Entendi a explicação e irei verificar a atividade reformulada.

Sobre meu código, mencionei que de fato não existe empréstimo sem cliente atribuído, e para contornar isso, alterei o campo "id_cliente" de um dos empréstimos para "NULL".

Agradeço a atenção e a correção! :)