select dentro de outro select

Delphi

11/01/2013

Tem como eu fazer algo do tipo

select codigo, nome, (selec sum(total) from compra), ano from cliente

Eu gostaria de somar o total de compra de um cliente no ano que esta em uma tabela compras e mostrar junto com os dados do cliente que está na tabela cliente.

É possível?
Luiz Junior

Luiz Junior

Curtidas 0

Respostas

Junior Miranda

Junior Miranda

11/01/2013

Qual o seu SGBD?

SGBD´s como Firebird, Postgresql... Permitem o uso de subselect.

segue um exemplo:
select cliente.codigo, 
       cliente.nome, 
       (select coalesce(sum(total),0) from compra where compra.cliente = cliente.codigo and [...]) total_compras, 
       ano from cliente


[]´s
GOSTEI 0
Landerson Santos

Landerson Santos

11/01/2013

Tem como eu fazer algo do tipo

select codigo, nome, (selec sum(total) from compra), ano from cliente

Eu gostaria de somar o total de compra de um cliente no ano que esta em uma tabela compras e mostrar junto com os dados do cliente que está na tabela cliente.

É possível?


Luiz uma outra alternativa seria você fazer o uso de um MasterDatail, assim a cada alteração de registro do cliente (Master) o somatorio seria exibido (detalhe).

Analise o desempenho das soluções encontradas. e Escolha.
GOSTEI 0
Rodolpho Silva

Rodolpho Silva

11/01/2013

Luiz,

Quase todos os SGBD de hoje em dia suportam isso (subselect):

Select
tabela1.Campo1
tabela2.Campo2
from
tabela1
(select campoX as Campo2 from tabelaX) Tabela2
GOSTEI 0
Alisson Santos

Alisson Santos

11/01/2013

Amigo isso chama subselect e é utilizado para trazer alguma informação para uma outra select que pode ser de comparação ou utilização de outros campos.
Como seria essa sua select que precisa fazer para podermos auxiliar?
GOSTEI 0
Luiz Junior

Luiz Junior

11/01/2013

Putz pior que é uma base em Access, será que é possível fazer subselect?
GOSTEI 0
Luiz Junior

Luiz Junior

11/01/2013

Aí galera consegui fazer o que queria utilizando o group by!

Obrigado pela ajuda!

ficou mais ou menos assim:

select distinct(c.codjogador),nome, count(c.codjogador) as Títulos from (campeoes c
left join jogadores j on c.codjogador = j.codigo)
group by c.codjogador, nome
GOSTEI 0
POSTAR