Subconsultas SQL

Oracle

29/06/2013

Olá a todos!

Preciso montar duas subconsultas. Na primeira, preciso exibir para cada carro a quantidade vendida e a quantidade em estoque. Na segunda, preciso listar quantos modelos de carros foram vendidos por cada revendedora. As tabelas utilizadas são:

Automoveis Negocios Garagens
codigo codigo codigo
ano ano ano
modelo cgc cgc
fabricante preco quantidade

1º Select:

Select a.modelo, a.ano,
(select count(*) from negocios n where n.codigo = a.codigo and n.ano = a.ano) QtdeVendida,
(select sum(quantidade) from garagens g where g.codigo = a.codigo and g.ano = a.ano) QtdeEstoque
From automoveis a
order by a.modelo, a.ano

O problema nesta consulta é que alguns valores da coluna QtdeEstoque aparecem com valor NULL, o que significa que não há um relacionando da tabela automovel com a tabela garagens. Como corrigir isso?

2º Select:

select n.cgc, (select r.nome from revendedoras r where n.cgc=r.cgc) as Revendedora,
(select count(*) from automoveis a where n.codigo=a.codigo and n.ano=a.ano) as QtdCarros
from negocios n
order by n.cgc

Nesta consulta, os registros da coluna QtdCarros aparecem com valor 1. Sei que está incorreto, porém não consigo acertar a segunda subconsulta interna.

Estes dois problemas fazem parte de um trabalho de banco de dados que preciso entregar.

Agradeço pela ajuda.
Simone Grandini

Simone Grandini

Curtidas 0

Respostas

Marco Silva

Marco Silva

29/06/2013

Olá, Simone Grandini, tudo bem?

Não sei se vai dar certo, mas tente o seguinte no primeiro select:

Select a.modelo, a.ano,
(select count(*) from negocios n where n.codigo = a.codigo and n.ano = a.ano) QtdeVendida,
(select sum(quantidade) from garagens g where g.codigo = a.codigo and g.ano = a.ano) QtdeEstoque
From automoveis a
order by a.modelo, a.ano


Já no segundo select, tente isto:
select n.cgc, (select r.nome from revendedoras r where n.cgc=r.cgc) as Revendedora,
(select count(*) from automoveis a where n.codigo=a.codigo and n.ano=a.ano group by a.codigo) as QtdCarros
from negocios n
order by n.cgc 


Espero ter ajudado...

T++
GOSTEI 0
Marco Silva

Marco Silva

29/06/2013

Desculpa, não alterei o primeiro select. Segue a correção:

Select a.modelo, a.ano,
(select count(*) from negocios n where n.codigo = a.codigo and n.ano = a.ano group by n.codigo) QtdeVendida,
(select sum(quantidade) from garagens g where g.codigo = a.codigo and g.ano = a.ano group by g.codigo) QtdeEstoque
From automoveis a
order by a.modelo, a.ano


Acho que agora foi.

T++
GOSTEI 0
POSTAR