Ed
há 4 horas
Vamos analisar a questão passo a passo. Queremos identificar os médicos que não possuem consulta marcada na data de hoje. - A tabela medico tem todos os médicos. - A tabela consulta tem as consultas marcadas, com data, id_paciente e id_medico. - Para encontrar médicos sem consulta hoje, precisamos listar todos os médicos que não têm nenhuma consulta com data = hoje. A forma correta é usar um LEFT JOIN da tabela medico para consulta, e filtrar os casos onde a consulta é nula (ou seja, não existe consulta hoje) ou a data da consulta é diferente de hoje. Analisando as alternativas: 1) ```sql SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; ``` - Usa LEFT JOIN correto. - Filtra onde a data da consulta é diferente de hoje ou consulta não existe (data is null). - Parece correta. 2) ```sql SELECT DISTINCT m.nome as nome_medico FROM medico m JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; ``` - Usa JOIN (INNER JOIN), que só retorna médicos que têm consulta. - Não retorna médicos sem consulta hoje. - Incorreta. 3) ```sql SELECT DISTINCT m.nome as nome_medico FROM medico m RIGHT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null; ``` - RIGHT JOIN da consulta para médico. - Pode trazer médicos que não existem? Não faz sentido aqui. - Incorreta. 4) ```sql SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c WHERE c.id_medico = m.id and data != curdate() or data is null; ``` - Sintaxe incorreta: falta ON no JOIN. - Incorreta. 5) Dizer que não é possível com um SELECT é falso, pois a alternativa 1 resolve. Resposta correta: alternativa 1.
Cadastre-se ou realize login
Mais perguntas desse material