Banco de dados

Ola e que to fazendo alguns exercício de sql serve tem uma questão que precisa de um subselect e para apresentar todos os nomes dos funcionários do que tenha o código 9 e todos os pedidos feitos por ele comando que fiz foi esse

select nome from funcionários where códigodofuncionário in (select códigodofuncionário from pedidos where códigodofuncionário = 9)

mas da erro de sixtaxe falando que não aceita esses tipos de operador com =,< etc algum pode me ajudar Obrigado

Olá wire, blz?

SELECT f.nome
FROM
TabelaFuncionarios f,
TabelaPedidos p
WHERE f.codigodofuncionario = p.codigodofuncionario
AND p.codigodofuncionario = 9

Dá uma olhada pra ver se isso não te ajuda…

muito obrigado funcionou forma mais facil ne valeu mesmo nao querendo ser xato vc sabe como fazer com subselect valeu mesmo

Opa,

Segue abaixo um exemplo com SubQuery…

SELECT f.nome   
FROM TabelaFuncionarios f
WHERE f.codigodofuncionario IN 
	(SELECT p.codigodofuncionario FROM TabelaPedidos p WHERE p.codigodofuncionario = 9)

joaosouza valeu mesmo muito obrigado :slight_smile:

Ola eu denovo :slight_smile: e que eu executei esse subselect fico assim

select f.nome,p.númerodopedido
from funcionários f,pedidos p
where f.códigodofuncionário in 
(select p.códigodofuncionário from pedidos p where p.códigodofuncionário = 9)

mas agora ele repete todos os registro com o código número 9 e ta substituindo todos os registro pelo código número 9, se puder me dar uma ajuda agradeço valeu pelas suas resposta

Faça o select pela tabela pedidos, ela deve ser a master, e pelo amor, estamos em 2010 e ninguem usa os “JOINS”, eu uso desde 1999, acho sofrivel misturar a logica de filtragem com os joins entre tabelas tudo na clausula WHERE.

select f.nome, p.numeropedido from pedidos p
left join funcionarios f on(f.codigofuncionario = p.codigofuncionario)
where p.codigofuncionario = 9

Bom o fato é que neste caso ficou sem subselect, se era esta a necessidade, mas tu ja aprendeu como faz subselect certo :wink: