Fórum SQL Complexo ? #339948
05/04/2007
0
tenho a seguinte situação:
tenho uma tabela:
TABELA_PRECO
ID
DESCRICAO
ID_PRODUTO
VALOR
nesta tabela o mesmo produto pode ter dois registros com preços diferentes, a pegunta e a seguinte, como fazer um select para mostrar um só registro com os preços do produto ?
[]´s
Renatacoimbra
Curtir tópico
+ 0Posts
05/04/2007
Facc
Uma sugestão que eu te dou é trabalhar com tabela de preço, eu trabalho assim aqui.
e qndo preciso pego pelo código do produto os preços dessa tabela de preço
Gostei + 0
05/04/2007
Martins
[list:9546849fe8]ID DESCRICAO ID_PORDUTO VALOR
1 ÓLEO XXXX 01154 1,20
4 ÓLEO XXXX 02541 1,30 [/list:u:9546849fe8]
vc quer listar Óleo, mas quer uma coluna q mostre preço1 e preço2, mais ou menos isso?
Gostei + 0
05/04/2007
Pestana_
não sei se consegui entender, mas vou postar o que entendi.
acho que não tem como fazer o que você quer uzando somente um select, porque cada preço do produto em um registro é diferente do outro registro então por isso que sempre trás repetido a descrição do produto, com isso não dá pra colocar todos os preços em um só registro, é isso o problema que está aconteçento?.
o que vc poderia fazer é utilizar o conceito de master-detalhe ai vc utiliza dois selects
select master teria a descrição produto e o select detalhe teria os preços do produto
não sei se fui bem claro, mas qualquer coisa eu posto de novo,
Pestana.
Gostei + 0
05/04/2007
Motta
SELECT * FROM PRECOS WHERE COD-PROD = ´XXX´ AND :DATA BETWEEN DATA_INICIO AND DATA_FIM
A VIGENCIA (DATA_INICIO) DEVE ESTAR NA pk ASSIM SÓ TERIA UM PRECO POR VIGENCIA
Gostei + 0
06/04/2007
Renatacoimbra
Vou reformular minha dúvida, isso que estou fazendo é uma tabela de preços, o usuário tem a opção de gerar quantas tabelas de preços quiser, baseando-se nos preços principais dos produtos.
TABELA_PRECO
ID
DESCRICAO
ID_PRODUTO
DESC_PRODUTO
VALOR
[b:84d3216d69]Exemplo da Tabela:[/b:84d3216d69]
ID DESCRICAO ID_PRODUTO DESC_PRODUTO VALOR --------------------------------------------------------------------------- 01 TABELA A 000001 ÁCIDO BÓRICO 150,00 02 TABELA B 000001 ÁCIDO BÓRICO 200,00 03 TABELA C 000001 ÁCIDO BÓRICO 220,00
nesta situação eu preciso fazer uma Tabela impressa que mostre desta forma:
[b:84d3216d69]Exemplo da Listagem:[/b:84d3216d69]
ID_PRODUTO DESC_PRODUTO PRECO A PRECO B PRECO C ------------------------------------------------------------------------------ 000001 ÁCIDO BÓRICO 150,00 200,00 220,00 ... ...
Gostei da idéia que o [b:84d3216d69]Pestana_[/b:84d3216d69] colocou, se alguém tiver mas alguma solução favor postar.
Obrigada !
[]´s
Gostei + 0
06/04/2007
Robsonselzelin
Se vc estiver utilizando banco de dados MySQL, se não me engano, ele tem uma função de transposição, do resultSet do select, de linhas para colunas, senão, vc vai ter que fazer isso via programação delphi.
Espero que isso ajude.
Gostei + 0
06/04/2007
Catunda
Obs:
1-Ajuste o tamanho do parametro DPROD que recebe a descrição do produto.
2-Substitua a palavra ´suatabela´ pelo nome da sua tabela.
3-Estou supondo que só existem 3 subtabelas ou preços pra cada produto.
CREATE PROCEDURE TABPRECO
RETURNS (
COD CHAR(3) CHARACTER SET NONE,
DPROD VARCHAR(10) CHARACTER SET NONE,
VR1 NUMERIC(15,2),
VR2 NUMERIC(15,2),
VR3 NUMERIC(15,2))
AS
DECLARE VARIABLE XZ INTEGER;
begin
for select id_produto,sum(valor) from suatabela group by id_produto
order by id_produto into :cod,:xz do
begin
select desc_produto,valor from suatabela
where (id_produto=:cod and descricao=´tabela a´) into :dprod,:vr1;
select desc_produto,valor from suatabela
where (id_produto=:cod and descricao=´tabela b´) into :dprod,:vr2;
select desc_produto,valor from suatabela
where (id_produto=:cod and descricao=´tabela c´) into :dprod,:vr3;
suspend;
end
end
Gostei + 0
07/04/2007
Renatacoimbra
mais o problema é que pode ter mais de 3 tabelas, teria q ser uma coisa dinamica, a opção de gerar tabelas de preços fica aberto para o usuário criar quantas desejar.
Obrigada !
[]´s
Gostei + 0
07/04/2007
Renatacoimbra
Uso FireBird 1.5
Também aceito sugestão de outras formas de criar tabela de preços, essa minha pode não ser a melhor meneira.
[]´s
Gostei + 0
07/04/2007
Catunda
Eu particularmente não vejo uma razão plausivel para se criar tabelas dependentes dentro de uma outra tabela geral. Se fossem independentes eu entenderia.
Perceba que mesmo se coloca-se-mos um laço na procedure pra controlar o numero de preços diferentes essa linha acabaria não cabendo em uma folha de relatório dado o grande numero de colunas.
Ou vc limita a qtde de preços diferentes ou imprima uma tabela de preço normal para cada usuário.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)