AJUDA COM SQL
galera, preciso da ajuda de vocês pra montar uma consulta sql.
tenho uma tela, onde preciso preencher uma lista com dados de 3 tabelas:
tabela orcamento
cod_orcamento pk
data_cadastro
cod_cliente fk
tabela clientes
cod_cliente pk
nome
tabela orcamento_produtos
cod_orcamento fk
cod_produto fk
quantidade
valor_unitario
preciso que na grade apareça assim
código | data | cliente | valor
00001 25/07/2012 CAIO 1,00
consegui realizar o inner join para pegar o nome do cliente, mas estou com dificuldade pra monta a na consulta a função que busque todos os produtos ta tabela orcamento_produtos relacionados com o orçamento, e devolva o valor da soma dos mesmo.
alguém pode me da uma força ai.
tenho uma tela, onde preciso preencher uma lista com dados de 3 tabelas:
tabela orcamento
cod_orcamento pk
data_cadastro
cod_cliente fk
tabela clientes
cod_cliente pk
nome
tabela orcamento_produtos
cod_orcamento fk
cod_produto fk
quantidade
valor_unitario
preciso que na grade apareça assim
código | data | cliente | valor
00001 25/07/2012 CAIO 1,00
consegui realizar o inner join para pegar o nome do cliente, mas estou com dificuldade pra monta a na consulta a função que busque todos os produtos ta tabela orcamento_produtos relacionados com o orçamento, e devolva o valor da soma dos mesmo.
alguém pode me da uma força ai.
Tenta aÃ
select o.cod_orcamento,o.data_cadastro,c.nome,sum(op.valor_unitario) from orcamento o,clientes c,orcamentos_produtos op where o.cod_orcamento=op.cod_orcamento and o.cod_cliente=c.cod_cliente group by op.cod_orcamento
select o.cod_orcamento,o.data_cadastro,c.nome,sum(op.valor_unitario) from orcamento o,clientes c,orcamentos_produtos op where o.cod_orcamento=op.cod_orcamento and o.cod_cliente=c.cod_cliente group by op.cod_orcamento
ADHEL, não deu certo, retorna o erro -2147217887 - você tentou executar uma consulta que não inclui a expressão [ô]COD_ORCAMENTO[ô] especificada como parte de uma função agregada.
tentei assim:
e retorna o mesmo erro.
tentei assim:
SELECT orcamentos.cod_orcamento, orcamentos.data_cadastro, clientes.nome, SUM(orcamentos_produtos.quantidade * orcamentos_produtos.valor_unitario) AS TOTAL
FROM ((orcamentos
INNER JOIN clientes ON orcamentos.cod_cliente = clientes.cod_cliente)
INNER JOIN orcamentos_produtos ON orcamentos.cod_orcamento = orcamentos_produtos.cod_orcamento)
WHERE orcamentos.excluido = 0
ORDER BY orcamentos.cod_orcamento ASC
e retorna o mesmo erro.
estranho que com essa consulta minha, se eu retirar a parte
[ô]SUM(orcamentos_detalhes.quantidade * orcamentos_detalhes.valor_unitario) AS TOTAL[ô]
, ela funciona, entao o problema esta nela, mas qual o problema?
Desculpe nao entendi
Pensava que voce queria o total do orçamento.
tem como explicar mais detalhadamente o que voce necessita.
Se possivel coloca um exemplo como voce fez la em cima ,só que dessa vez com mais de um item
Pensava que voce queria o total do orçamento.
tem como explicar mais detalhadamente o que voce necessita.
Se possivel coloca um exemplo como voce fez la em cima ,só que dessa vez com mais de um item
ADHEL, é exatamente o valor do orçamento que preciso.
como na tabela orcamento nao fica gravado o valor do mesmo, preciso que a consulta some o valor dos itens cadastrados vezes a quantidade desse item.
exemplo:
tabela orcamento
codigo cliente data
00001 caio... 26/07/2012
tabela orcamento_produtos
orcamento produto quantidade valor
00001 00005 2 5.00
entao a consulta tem que preencher a grade assim:
código | data | cliente | valor
00001 26/07/2012 CAIO 10,00
como na tabela orcamento nao fica gravado o valor do mesmo, preciso que a consulta some o valor dos itens cadastrados vezes a quantidade desse item.
exemplo:
tabela orcamento
codigo cliente data
00001 caio... 26/07/2012
tabela orcamento_produtos
orcamento produto quantidade valor
00001 00005 2 5.00
entao a consulta tem que preencher a grade assim:
código | data | cliente | valor
00001 26/07/2012 CAIO 10,00
resolvido.
SELECT O.COD_ORCAMENTO, O.DATA_CADASTRO, C.NOME_RAZAO,
(SELECT SUM(OD.QUANTIDADE * OD.VALOR_UNITARIO)
FROM ORCAMENTOS_DETALHES OD
WHERE COD_ORCAMENTO = O.COD_ORCAMENTO) AS TOTAL
FROM ORCAMENTOS O
INNER JOIN CONTATOS C ON O.COD_CONTATO = C.COD_CONTATO
subselect feito dentro do próprio select?
prefiro utilizar o subselect dentro do From, deixa o código mais organizado, assim também funcionou nos testes aqui:
prefiro utilizar o subselect dentro do From, deixa o código mais organizado, assim também funcionou nos testes aqui:
select distinct orc.cod_orcamento, orc.data_cadastro, con.nome_razao, soma.total
from orcamentos orc
inner join orcamentos_detalhes orcd on orc.cod_orcamento = orcd.cod_orcamento
inner join (
select _orc.cod_orcamento, sum(_orcd.quantidade * _orcd.valor_unitario) total
from orcamentos _orc
inner join orcamentos_detalhes _orcd on _orc.cod_orcamento = _orcd.cod_orcamento
group by _orc.cod_orcamento
)soma on soma.cod_orcamento = orc.cod_orcamento
left join contatos con on con.cod_contato = orc.cod_contato
Galera, qual vocês acham que ficou melhor?
Tópico encerrado , respostas não são mais permitidas