Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Poderiam me explicar o codigo a seguir?

Poderiam me explicar o codigo a seguir, não ficou claro o que as linhas de codigo fazem.

SELECT p.nome AS nome_proprietario, COUNT(h.hospedagem_id)
AS total_hospedagens_ativas
FROM proprietarios p
JOIN hospedagens h ON p.proprietario_id = h.proprietario_id
WHERE h.ativo = 1
GROUP BY p.nome
ORDER BY total_hospedagens_ativas DESC
LIMIT 10;
1 resposta
solução!

Oie, Eduardo! Tudo bem?

Claro, vamos entender um pouco o que cada linha faz.

Na primeira linha, temos a seleção, usando o SELECT, do p.nome e renomeando eles como nome_proprietários. Continuando, é contado quantas hospedagens ativas cada um tem COUNT(h.hospedagem_id) e é dado o nome de total_hospedagens_ativas a essa contagem:

SELECT p.nome AS nome_proprietario, COUNT(h.hospedagem_id)
AS total_hospedagens_ativas

Em seguida, é indicado de qual tabela os dados vem, que é da proprietários e damos um apelido de p para essa tabela:

FROM proprietarios p

O JOIN usado no código é usado para unir a tabela proprietarios e a tabela hospedagens, que deve ser igual ao campo proprietario_id da tabela hospedagens (representada pelo apelido h). Ou seja, buscamos todas as hospedagens que têm o mesmo dono:

JOIN hospedagens h ON p.proprietario_id = h.proprietario_id

É aplicado um filtro usando o WHERE. Será filtrado as hospedagens que estão ativas quando o campo ativo for igual a 1:

WHERE h.ativo = 1

Depois, o resultado é agrupado pelo nome do proprietário para contar quantas hospedagens ativas cada um possui:

GROUP BY p.nome

É hora de ordenar as hospedagens ativas usando o ORDER BY e a ordenação vai ser decrescentedescrescente (do maior para o menor) usando o DES:

ORDER BY total_hospedagens_ativas DESC

E, por fim, é colocado um limite na consulta para retornar apenas 10 proprietários com a hospedagem ativa:

LIMIT 10

Para expandir os seus conhecimentos recomendo a leitura dos artigos:

Espero ter ajudado.

Boa leitura e estudos, Eduardo!