Olá a todos!
Estou a praticar sql e no exercicio que estou a fazer não estou a conseguir resolver o seguinte:
As tabelas são:
Departamento(CodDepartamento, Nome, Piso, CodChefe)
Venda(Departmento, CodProducto, Data, Quantidade)
Produto(CodProduto, Descricao, Valor)
A questão em dúvida é a seguinte
Que produtos foram vendidos por todos os departamentos?
Já fiz vários testes, mas não está a funcionar.
Muito Obrigado!
Produtos Vendidos em todos os departamentos
-
- Rank: Analista Júnior
- Mensagens: 79
- Registrado em: Ter, 16 Mai 2006 11:40 am
- Localização: Patos de Minas - MG
é isso que quer???
Tem que colocar é codigo do departamento na Venda!!
select c.nome,a.descricao
from produto a,venda b,departamento c
where a.codproduto = b.codproduto and
b.coddepartamento = c.coddepartamento;
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

posta seus testes ai..
você não pode colocar cada departamento no seu where?
você não pode colocar cada departamento no seu where?
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 13 Set 2010 10:56 am
- Localização: Lisboa
O messias profetisado em Isaías (49:7, 50:4...) e Daniel (2:45, 9:24-27) é Jesus. Ele disse que viria outra vez.
Boa Tarde a todos!
Olá RJG obrigado pela resposta e possivelmente é isso que o exercicio pede.
Mas quando li a questão, percebi que poderia haver um produto ou vários vendidos em todos os departamentos e era isso que eu procurava.
O que me enviaste retornou os produtos vendidos e os departamentos respectivos.
@ Victor Hugo Muniz
A hipotese de saber os departamentos e fizer pesquisa dept a dept não dá dado que é um exercicio genérico em que apenas tenho a descrição dos campos das tabelas como enviei.
O que estava a pensar era ver quais eram os departamentos existentes e verificar se cada produto foi vendido em todos os departamentos, ou contar o número total de departamentos e verificar cada produto é vendido x vezes.
Se tiverem alguma ideia de como fazer isro, agradeço.
Muito Obrigado.
Olá RJG obrigado pela resposta e possivelmente é isso que o exercicio pede.
Mas quando li a questão, percebi que poderia haver um produto ou vários vendidos em todos os departamentos e era isso que eu procurava.
O que me enviaste retornou os produtos vendidos e os departamentos respectivos.
@ Victor Hugo Muniz
A hipotese de saber os departamentos e fizer pesquisa dept a dept não dá dado que é um exercicio genérico em que apenas tenho a descrição dos campos das tabelas como enviei.
O que estava a pensar era ver quais eram os departamentos existentes e verificar se cada produto foi vendido em todos os departamentos, ou contar o número total de departamentos e verificar cada produto é vendido x vezes.
Se tiverem alguma ideia de como fazer isro, agradeço.
Muito Obrigado.
tente algo assim:
select *
from Produto
where cod_producto in (
select t1.cod_producto
from (
select cod_producto , departamento
from venda
group by cod_producto , departamento) t1
group by t1.cod_producto
having count(*) >= (select count(*) from departamento));
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

o que traz esse select ?
você resolve isso por outer join
select p.CodProduto
from produtos p,
venda v,
departamento d
where p.CodProduto= v.CodProduto
and v.CodDepartamento(+) = d.CodDepartamento
Outer Join
Another type of join is called an outer join. This type of join returns all rows from one table and only those rows from a secondary table where the joined fields are equal (join condition is met).
For example,
select suppliers.supplier_id, suppliers.supplier_name, orders.order_date
from suppliers, orders
where suppliers.supplier_id = orders.supplier_id(+);
This SQL statement would return all rows from the suppliers table and only those rows from the orders table where the joined fields are equal.
The (+) after the orders.supplier_id field indicates that, if a supplier_id value in the suppliers table does not exist in the orders table, all fields in the orders table will display as <null> in the result set.
The above SQL statement could also be written as follows:
select suppliers.supplier_id, suppliers.supplier_name, orders.order_date
from suppliers, orders
where orders.supplier_id(+) = suppliers.supplier_id
Let's look at some data to explain how outer joins work:
We have a table called suppliers with two fields (supplier_id and name).
It contains the following data:
supplier_id supplier_name
10000 IBM
10001 Hewlett Packard
10002 Microsoft
10003 NVIDIA
We have a second table called orders with three fields (order_id, supplier_id, and order_date).
It contains the following data:
order_id supplier_id order_date
500125 10000 2003/05/12
500126 10001 2003/05/13
If we run the SQL statement below:
select suppliers.supplier_id, suppliers.supplier_name, orders.order_date
from suppliers, orders
where suppliers.supplier_id = orders.supplier_id(+);
Our result set would look like this:
supplier_id supplier_name order_date
10000 IBM 2003/05/12
10001 Hewlett Packard 2003/05/13
10002 Microsoft <null>
10003 NVIDIA <null>
The rows for Microsoft and NVIDIA would be included because an outer join was used. However, you will notice that the order_date field for those records contains a <null> value.
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 13 Set 2010 10:56 am
- Localização: Lisboa
O messias profetisado em Isaías (49:7, 50:4...) e Daniel (2:45, 9:24-27) é Jesus. Ele disse que viria outra vez.
Olá a todos!
Quero agradecer-vos pela vossa ajuda.
Burga, o que enviaste funcionou. E muito Obrigado Victo Hugo pois compreendi o outer join.
Quero agradecer-vos pela vossa ajuda.
Burga, o que enviaste funcionou. E muito Obrigado Victo Hugo pois compreendi o outer join.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante