SELECT F.nome FROM funcionario F JOIN
departmento D
ON F.dept_id = 50
AND F.dept_id = D.dept_id;
SELECT F.nome FROM funcionario F JOIN
departmento D
ON F.dept_id = 50
AND F.dept_id = D.dept_id;
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.
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.