Ajuda com SQL SERVER soma com mais de 1 tabela

sou iniciante em banco de dados e gostaria de uma ajuda com sql server

tenho 1 tabela cliente (dados padrões)
tenho 1 tabela servico com id, valor
tenho 1 tabela orcamento com id, fk_cliente

gostaria de somar todos os valores de orçamento de 1 determinado cliente como faço?

tentei algumas situações mas o max que consegui foi somar o valor de todos os serviços :confused: a ultima coisa q tentei mas nao soma nada foi

SELECT SUM(S.VALOR)AS TOTAL FROM ORCAMENTO O inner join SERVICOS s on (S.ID = O.ID) where O.ID = 2

desde ja grato.

raiduarte

para entendimento:

Qual a relação entre as tabelas cliente (dados padrões) e servico(id, valor)?
Ex: existe uma pk_id cliente referenciada na servico?
E a tabela orcamento qua a sua função no seu calculo?

[quote=gilsonk]raiduarte

para entendimento:

Qual a relação entre as tabelas cliente (dados padrões) e servico(id, valor)?
Ex: existe uma pk_id cliente referenciada na servico?
E a tabela orcamento qua a sua função no seu calculo?

bom na tabela cliente existe apenas um primary key id na servico tb so existe uma primary key id
ja no orçamento existe uma fk_id_cliente e uma FK_id_servico.

a minha ideia era a seguinte:
os serviços jé estarão cadastrados com seus valores.
o cliente necessita de um cadastro.
no orçamento ele lê o cliente e seus dados e também lê os serviços e valores assim fazendo amarração no orçamento os valores do que se deseja e os dados do cliente.
queria somar esses valores do cliente.
ex:
orçamento 1

cliente 1 pede servico de concertar carro 50,00
cliente 1 pede servico de concertar cano 40,00

orçamento valor 90 reais ( soma dos produtos no orçamento 1)

[/quote]

alguem poderia me ajudar? alguem ? kk tenso ^^ para mais informações
fiz este codigo para verificar os orçamentos com todas as informações que quero, nao sei se ajuda em me ajudarem mas a ideia era colocar algo ae que somasse esse S.VALOR ele é uma FK da tabela servicos onde se encontram os valores dos servicos.

SELECT O.ID,O.DATA_EMISSAO, C.NOME,C.RG_IE,C.CPF_CNPJ,C.BAIRRO,C.COMPLEMENTO,C.CIDADE,C.ESTADO,C.CEP,C.TELEFONE,C.CELULAR,C.EMAIL,O.OBSERVACAO,S.NOME,S.VALOR FROM ORCAMENTO O INNER JOIN CAD_CLIENTE C ON (O.ID_CLIENTE = C.ID) INNER JOIN SERVICOS S ON (O.ID_SERVICO = S.ID)

raiduarte,
se tens uma fk do cliente na serviço e ela realmente referencia, deve funcionar.
posdes ate fazer mais simples para teste:

SELECT C.*, O.* FROM ORCAMENTO O , CLIENTE C WHERE O.FK_ID_CLIENTE=1 --ou -- WHERE C.ID=1 AND O.FK_ID_CLIENTE=1
É obvio que não usaras está notação!!!
com um join funcionara se usares a pk e a fk
ou mesmo com um LEFT JOIN
lembre se de usar o WHERE

raiduarte, vê se isso te ajuda

SELECT CLIENTE.NOME, ORCAMENTO.ID, SUM (SERVICO.VALOR)
FROM CLIENTE INNER JOIN ORCAMENTO ON (CLIENTE.ID = ORCAMENTO.FK_ID_CLIENTE
         INNER JOIN SERVICO ON (SERVICO.ID = ORCAMENTO.FK_ID_SERVICO)
WHERE (CLIENTE.NOME LIKE '%')
GROUP BY CLIENTE.ID;

O que eu tentei aqui foi somar os valores de serviços, juntar as tabelas com o INNER JOIN, fornecer uma cláusula WHERE onde numa aplicação futura você possa pesquisar o cliente pelo nome (ou por parte do nome) e agrupar os serviços de acordo com o cliente.
Como no INNER JOIN deve ter ocorrido o filtro e eliminação das tuplas desnecessárias, o código que eu te passei deve estar com a lógica certa, mas não com os atributos corretos.

Abraço!

[quote=fmr]raiduarte, vê se isso te ajuda

SELECT CLIENTE.NOME, ORCAMENTO.ID, SUM (SERVICO.VALOR)
FROM CLIENTE INNER JOIN ORCAMENTO ON (CLIENTE.ID = ORCAMENTO.FK_ID_CLIENTE
         INNER JOIN SERVICO ON (SERVICO.ID = ORCAMENTO.FK_ID_SERVICO)
WHERE (CLIENTE.NOME LIKE '%')
GROUP BY CLIENTE.ID;

O que eu tentei aqui foi somar os valores de serviços, juntar as tabelas com o INNER JOIN, fornecer uma cláusula WHERE onde numa aplicação futura você possa pesquisar o cliente pelo nome (ou por parte do nome) e agrupar os serviços de acordo com o cliente.
Como no INNER JOIN deve ter ocorrido o filtro e eliminação das tuplas desnecessárias, o código que eu te passei deve estar com a lógica certa, mas não com os atributos corretos.

Abraço![/quote]

obrigado amigo eu consegui aki fiz algumas alterações obviamente e funcionou como eu precisava obrigado a ajuda :smiley:

[quote=gilsonk]raiduarte,
se tens uma fk do cliente na serviço e ela realmente referencia, deve funcionar.
posdes ate fazer mais simples para teste:

SELECT C.*, O.* FROM ORCAMENTO O , CLIENTE C WHERE O.FK_ID_CLIENTE=1 --ou -- WHERE C.ID=1 AND O.FK_ID_CLIENTE=1
É obvio que não usaras está notação!!!
com um join funcionara se usares a pk e a fk
ou mesmo com um LEFT JOIN
lembre se de usar o WHERE

[/quote]

Obrigado pela ajuda fiz algumas alterações e conseguir resolver o problema aki :smiley: