4
respostas

alguém pode me ajudar se há algum erro nesse código?

SELECT F.nome FROM funcionario F JOIN 
departmento D 
ON F.dept_id = 50 
AND F.dept_id = D.dept_id;
4 respostas

Olá, boa tarde!

Não testei, mas acho que no ON vc deveria apenas colocar onde as tabelas se conectam. Demais cláusulas condicionais dentro de um JOIN vão no HAVING, que é como um WHERE usado no contexto do JOIN.

SELECT F.nome FROM funcionario F
JOIN departmento D ON F.dept_id = D.dept_id
HAVING F.dept_id = 50;

e aí man. valeu. isso foi uma questão de concurso que eu estou pretendendo fazer um recurso, pois pra mim esse código não está de acordo. a seguir segue o comando da questão.

** //

Um desenvolvedor escreveu uma consulta em um

banco de dados Oracle que apresenta o nome de

todos os funcionários de determinado

departamento. Assinale a alternativa que

apresenta corretamente a consulta escrita pelo

desenvolvedor. //*

e o item dado como certo foi o código acima. achei estranho a questão querer o nome de todos os funcionário e colocar uma condicional. se alguém puder me esclarecer melhor, agradeço.

outra dúvida que fica é exatamente no join. existe um join puro ? não deveria ser inner join ou algum outro?

Eu testei uma sintaxe igual no MySQL, substituindo um INNER JOIN por JOIN e colocando as condicionais todas no ON.

Funcionou igual. Minhas considerações anteriores estavam erradas, para o MySQL pelo menos, e apesar de não saber se JOIN e INNER JOIN são realmente equivalentes no MySQL, deu na mesma no meu teste.

Vale lembrar que essa sintaxe pode variar de um sGDB para outro, e apesar do MySQL ser da Oracle hje, acho que eles tem outro sGDB com o nome Oracle. Se quiser ter certeza mesmo, vc deveria testar esse código no banco de dados Oracle tb (mas chuto que vai funcionar).

valeu, amigo, vou testar no oracle, mas a questão também que fica é se esse código retorna todos os elementos que ele pediu. essa condicional aí deixou a parada toda confusa.

ps. como disse, testei aqui o código no oracle e ele retorna uma condicional com alguns nomes e não todos como a questão pediu.