1
resposta

[Sugestão] Desafio Resolvido II

Desenvolvi dois códigos e cheguei em dois resultados distintos. Creio que o segundo esteja correto, mas ainda estou um pouco em dúvida quanto aos joins. No caso, fiz o join no segundo codigo com aluno_curso para entender quantas matrículas haviam.

SELECT ca.nome, ca.id,
            COUNT(ca.id) as qtd_requisitos 
        FROM categoria as ca
        JOIN curso as cu ON cu.categoria_id = ca.id
GROUP BY ca.id, ca.nome
ORDER BY ca.nome DESC
LIMIT 1;
SELECT ca.nome, ca.id,
            COUNT(ca.id) as qtd_requisitos 
        from categoria as ca
        JOIN curso as cu ON cu.categoria_id = ca.id
        join aluno_curso as ac on ac.curso_id = cu.id
GROUP BY ca.id, ca.nome
ORDER BY COUNT(cu.id) DESC
LIMIT 1;
1 resposta

Oii, Gabriel! Tudo bem?

Parabéns por estar praticando as atividades!

Em seu primeiro código, você está fazendo um JOIN entre categoria e curso, agrupando pelos campos ca.id e ca.nome, e contando quantos ca.id existem em cada grupo. O resultado é ordenado pelo nome da categoria em ordem decrescente e limitado a um resultado. Já o segundo código, é adicionado um JOIN a mais com a tabela aluno_curso, agrupando pelos mesmos campos e ordenando pelo número de cursos (cu.id) em ordem decrescente, limitando também a um resultado.

As diferenças entre eles é que no primeiro código a ordenação é feita pelo nome da categoria em ordem decrescente, enquanto no segundo código, a ordenação é pelo número de cursos (COUNT(cu.id)) em ordem decrescente. Isso pode resultar em diferentes categorias sendo selecionadas como resultado. E no segundo ao adicionar o JOIN com aluno_curso, você está incluindo informações sobre as matrículas dos alunos nos cursos. Isso pode alterar os resultados, pois agora a contagem (COUNT(ca.id)) está considerando também as relações com aluno_curso.

Quanto a qual está correto, vai depender do objetivo da consulta. S é contar quantas categorias existem e ordenar pelo nome, o primeiro código está correto. Caso seja entender quantas matrículas existem por categoria e ordenar pelo número de cursos, então o segundo código.

Espero ter ajudado a esclarecer sua dúvida. Continue praticando e conte conosco.

Bons estudos, Gabriel!