Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilke1

nesta select

Recommended Posts

ola pessoal eo seguinte estou querendo selecionar somente os produtos com pmz diferenciado por loja acima de 10 %

mas não estou conseguindo fazer ,voces tem alguma ideia ,eu estou fazendo assim, mas ela traz os pmz de outra lojas que estão certas .sendo que eu quero que traga somente os que estão diferentes.

 

SELECT CD_PRODUTO,CD_LOJA,VL_CUSTO_PMZ

FROM TB_PRODUTO_LOJA

WHERE CD_PRODUTO LIKE'01794005' AND

CD_LOJA IN('001','020','022','023','026','027','029','034') AND

VL_CUSTO_PMZ <> (VL_CUSTO_PMZ * 1.10) :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui entender exatamente a finalidade do seu select.

Poderia explicar melhor?

ola amigo eo seguinte essa select ela traz vl_cuto_pmz ,mas eu quero que aparece somente os que estão diferentes ,sem repertir mesmo sendo loja diferentes .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui entender exatamente a finalidade do seu select.

Poderia explicar melhor?

ola amigo eo seguinte essa select ela traz vl_cuto_pmz ,mas eu quero que aparece somente os que estão diferentes ,sem repertir mesmo sendo loja diferentes .

 

amigo seria mas ou menos assim

 

query2.Close;

query2.ParamByName('cd_produto').AsString:=edit1.Text;

query2.Open;

 

qryteste.Close;

qryteste.ParamByName('cod_produto').AsString:=edit1.Text;

qryteste.Open;

 

vl_pmz:= qryteste.FieldByName('vl_custo_pmz').AsString;

while not query2.Eof do begin

vl_pmz1:= query2.FieldByName('vl_custo_pmz').AsString;

 

if vl_pmz <> vl_pmz1 then begin

listbox1.Items.Add(query2.FieldByName('vl_custo_pmz').AsString);

end;

 

Query2.Next;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observe um fato:

 

AND VL_CUSTO_PMZ <> (VL_CUSTO_PMZ * 1.10)

 

Você está comparando um valor existente na sua tabela com ele mesmo multiplicado 1.10.

Ou seja, o que está na sua tabela sempre vai ser diferente e o select vai retrornar todos eles mesmo.

 

Nesse caso você teria que utilizar um outro valor ou campo para comparação e consequentemente seu select vai funcionar de acordo com o que você está esperando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observe um fato:

 

AND VL_CUSTO_PMZ <> (VL_CUSTO_PMZ * 1.10)

 

Você está comparando um valor existente na sua tabela com ele mesmo multiplicado 1.10.

Ou seja, o que está na sua tabela sempre vai ser diferente e o select vai retrornar todos eles mesmo.

 

Nesse caso você teria que utilizar um outro valor ou campo para comparação e consequentemente seu select vai funcionar de acordo com o que você está esperando.

ISSO EU PERCEBI,EU MUDEI PARA OUTRO CAMPO,E MESMO ASSIM ELE TRAZ REPETIDOS

EX:

CD_LOJA CD_PRODUTO VL_CUSTO_PMZ

0001 1895 1.56

020 1895 1.56

022 1895 1.86

EU QUERIA QUE SOMENTE APARECESE SOMENTE UMA VEZ O VALOR DO CUSTO_PMZ 1.56

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o select alterado pra darmos uma olhada.

 

AMIGOS SERIA ESSA SELECT

SELECT CD_LOJA,CD_PRODUTO,VL_CUSTO_PMZ

FROM TB_PRODUTO_LOJA PL

WHERE PL.CD_LOJA IN('001','020','022','023','026','027','029','034') AND

PL.CD_PRODUTO='00189005'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o select alterado pra darmos uma olhada.

 

AMIGOS SERIA ESSA SELECT

SELECT CD_LOJA,CD_PRODUTO,VL_CUSTO_PMZ

FROM TB_PRODUTO_LOJA PL

WHERE PL.CD_LOJA IN('001','020','022','023','026','027','029','034') AND

PL.CD_PRODUTO='00189005'

SELECT PL.CD_LOJA,PL.CD_PRODUTO,PL.VL_CUSTO_PMZ

FROM TB_PRODUTO_LOJA PL,TB_LUCRO LC

WHERE PL.CD_LOJA IN('001','020','022','023','026','027','029','034') AND

PL.CD_PRODUTO='00189005' AND

PL.CD_PRODUTO=LC.CD_PRODUTO AND

PL.VL_CUSTO_PMZ <> LC.VL_CUSTO_PMZ) AND

PL.CD_LOJA=LC.CD_LOJA AND

LC.DT_VENDA=FN_CONV_DATA('10/09/2008')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que percebi ele está retornando mais de um pelo fato de o produto existir em mais de uma loja.

ISSO MESMO

 

 

amigo eu fiz assim,mas ainda continua trazendo os vl_custo_pmz repetidos entre lojas

qryteste.close;

query1.close;

query1.open;

qryteste.open;

 

query1.first;

while not query1.eof do begin

vvlpmz:= query1.fieldbyname('vl_custo_pmz').AsString;

qryteste.First;

while not qryteste.eof do begin

if vvlpmz <> qryteste.fieldbyname('vl_custo_pmz').AsString then begin

listbox1.Items.Add(qryteste.fieldbyname('vl_custo_pmz').AsString);

BREAK;

end;

qryteste.Next;

end;

vvlpmz:='';

query1.next;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que percebi ele está retornando mais de um pelo fato de o produto existir em mais de uma loja.

ISSO MESMO

 

 

amigo eu fiz assim,mas ainda continua trazendo os vl_custo_pmz repetidos entre lojas

qryteste.close;

query1.close;

query1.open;

qryteste.open;

 

query1.first;

while not query1.eof do begin

vvlpmz:= query1.fieldbyname('vl_custo_pmz').AsString;

qryteste.First;

while not qryteste.eof do begin

if vvlpmz <> qryteste.fieldbyname('vl_custo_pmz').AsString then begin

listbox1.Items.Add(qryteste.fieldbyname('vl_custo_pmz').AsString);

BREAK;

end;

qryteste.Next;

end;

vvlpmz:='';

query1.next;

end;

RESOLVIDO

 

var vvlpmz :real;

vcdloja:integer;

vcount :integer;

vqtlja :integer;

vlojas :array[1..12]of string;

begin

vcdloja:= 0;

vvlpmz := 0;

vcount := 0;

vqtlja := 0;

qryvlr1.close;

qryvlr2.close;

qryvlr1.open;

qryvlr2.open;

vqtlja:= qryvlr1.recordcount;

 

qryvlr1.first;

while not qryvlr1.eof do begin

vcdloja:= vcdloja + 1;

vvlpmz := qryvlr1.fieldbyname('vl_custo_pmz').value;

qryvlr2.first;

while not qryvlr2.eof do begin

if vvlpmz <> qryvlr2.fieldbyname('vl_custo_pmz').value then

vcount:= vcount + 1;

qryvlr2.next;

end;

 

if vcount = vqtlja -1 then begin

qryachavldiferente.close;

qryachavldiferente.parambyname('vl_custo_pmz_').value:= vvlpmz;

qryachavldiferente.open;

vlojas[vcdloja]:= qryachavldiferente.fieldbyname('cd_loja').asstring;

end;

vvlpmz := 0;

vcount := 0;

qryvlr1.next;

end;

qryresultado.close;

qryresultado.sql.clear;

qryresultado.sql.add('select cd_loja, round(vl_custo_pmz,3)vl_custo_pmz');

qryresultado.sql.add(' from tb_produto_loja');

qryresultado.sql.add(' where cd_produto = ''00189005'' and');

qryresultado.sql.add(' cd_loja in(:cdloja1, :cdloja2, :cdloja3, :cdloja4, :cdloja5, :cdloja6, :cdloja7, :cdloja8, :cdloja9, :cdloja10, :cdloja11, :cdloja12)');

qryresultado.parambyname('cdloja1' ).asstring := vlojas[1] ;

qryresultado.parambyname('cdloja2' ).asstring := vlojas[2] ;

qryresultado.parambyname('cdloja3' ).asstring := vlojas[3] ;

qryresultado.parambyname('cdloja4' ).asstring := vlojas[4] ;

qryresultado.parambyname('cdloja5' ).asstring := vlojas[5] ;

qryresultado.parambyname('cdloja6' ).asstring := vlojas[6] ;

qryresultado.parambyname('cdloja7' ).asstring := vlojas[7] ;

qryresultado.parambyname('cdloja8' ).asstring := vlojas[8] ;

qryresultado.parambyname('cdloja9' ).asstring := vlojas[9] ;

qryresultado.parambyname('cdloja10').asstring := vlojas[10];

qryresultado.parambyname('cdloja11').asstring := vlojas[11];

qryresultado.parambyname('cdloja12').asstring := vlojas[12];

qryresultado.sql.add('order by cd_loja');

qryresultado.open;

 

 

 

 

http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.