Jump to content
Fivewin Brasil

Ajuda em SQL


miragerr

Recommended Posts

Ola amigos

Estou com um dilema em uma QUERY e gostaria de uma ajuda

Sequinte: Tenho 3 tabelas.

1 - Saidas de Produtos (tendo itens excluidos)

2 - DAV (tendo o numero dos documentos)

3 - Tipos de Vendas( avista, aprazo, cheque )

entaum fiz assim

CREATE TEMPORARY TABLE IF NOT EXISTS tmp1

Select nrdoc, valor FROM saidas WHERE excluidos = '1'

Select COALESCE( c.tipo_v, b.tipo_v ) AS TIPO, b.nrdoc,

v.nomvde AS CAIXA,

COALESCE( c.vrvend, COALESCE( b.vrpago, b.vrvend ) ) AS VALOR_PG,

IF( b.tipbaix = 'C', 'Can', 'Bai' ) AS tpg,

t1.nrdoc, t1.valor

FROM DAV AS b LEFT JOIN vendedor AS v ON b.codven = v.codven

LEFT JOIN tipos_ven AS c ON b.nrdoc=c.nrdoc LEFT JOIN tmp1 AS t1 ON t1.nrdoc = b.nrdoc

WHERE b.dtbaix = '2010-09-19' ORDER BY CAIXA, b.nrdoc, tipo_pago;

vejam que tenho REGISTROS DUPLICADOS em NRDOC pois tem 2 tipos de VENDA para o mesmo NRDOC, o que gostaria éra de mostrar somente 1 valor na 1o LINHA VR.TMP1 e ZERO nas demais linhas caso haja mais de um NRDOC pois a venda é uma só, pois foi excluido apenas 1 item da venda, embora haja mais de 1 tipo de venda.


tipo nrdoc vende valor tpg nrdoc.TMP1 vr.TMP1

26 0000000864253 PAULA 22,27 Bai 0000000864253 2,76

03 0000000864253 PAULA 17,85 Bai 0000000864253 2,76 <<--- não é para repetir este valor

01 0000000864256 PAULA 9,90 Bai NULL NULL

03 0000000864260 PAULA 71,87 Bai NULL NULL

03 0000000864261 PAULA 17,41 Bai NULL NULL

01 0000000864267 PAULA 85,61 Bai 0000000864267 5,75

01 0000000864271 PAULA 3,99 Bai NULL NULL

id=code>id=code>


DEVERIA FICAR ASSIM

tipo nrdoc vende valor tpg nrdoc.TMP1 vr.TMP1

26 0000000864253 PAULA 22,27 Bai 0000000864253 2,76 << aparecer somente na 1a ocorrencia

03 0000000864253 PAULA 17,85 Bai NULL NULL

01 0000000864256 PAULA 9,90 Bai NULL NULL

03 0000000864260 PAULA 71,87 Bai NULL NULL

03 0000000864261 PAULA 17,41 Bai NULL NULL

01 0000000864267 PAULA 85,61 Bai 0000000864267 5,75

01 0000000864271 PAULA 3,99 Bai NULL NULL

id=code>id=code>

Fico no aguardo.

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Editado por - miragerr on 21/09/2010 10:19:53

Editado por - miragerr on 21/09/2010 10:23:27

Link to comment
Share on other sites

Ola amigos

Estou com um dilema em uma QUERY e gostaria de uma ajuda

Sequinte: Tenho 3 tabelas.

1 - Saidas de Produtos (tendo itens excluidos)

2 - DAV (tendo o numero dos documentos)

3 - Tipos de Vendas( avista, aprazo, cheque )

entaum fiz assim

CREATE TEMPORARY TABLE IF NOT EXISTS tmp1

Select nrdoc, valor FROM saidas WHERE excluidos = '1'

Select COALESCE( c.tipo_v, b.tipo_v ) AS TIPO, b.nrdoc,

v.nomvde AS CAIXA,

COALESCE( c.vrvend, COALESCE( b.vrpago, b.vrvend ) ) AS VALOR_PG,

IF( b.tipbaix = 'C', 'Can', 'Bai' ) AS tpg,

t1.nrdoc, t1.valor

FROM DAV AS b LEFT JOIN vendedor AS v ON b.codven = v.codven

LEFT JOIN tipos_ven AS c ON b.nrdoc=c.nrdoc LEFT JOIN tmp1 AS t1 ON t1.nrdoc = b.nrdoc

WHERE b.dtbaix = '2010-09-19' ORDER BY CAIXA, b.nrdoc, tipo_pago;

vejam que tenho REGISTROS DUPLICADOS em NRDOC pois tem 2 tipos de VENDA para o mesmo NRDOC, o que gostaria éra de mostrar somente 1 valor na 1o LINHA VR.TMP1 e ZERO nas demais linhas caso haja mais de um NRDOC pois a venda é uma só, pois foi excluido apenas 1 item da venda, embora haja mais de 1 tipo de venda.


tipo nrdoc vende valor tpg nrdoc.TMP1 vr.TMP1

26 0000000864253 PAULA 22,27 Bai 0000000864253 2,76

03 0000000864253 PAULA 17,85 Bai 0000000864253 2,76 <<--- não é para repetir este valor

01 0000000864256 PAULA 9,90 Bai NULL NULL

03 0000000864260 PAULA 71,87 Bai NULL NULL

03 0000000864261 PAULA 17,41 Bai NULL NULL

01 0000000864267 PAULA 85,61 Bai 0000000864267 5,75

01 0000000864271 PAULA 3,99 Bai NULL NULL

id=code>id=code>


DEVERIA FICAR ASSIM

tipo nrdoc vende valor tpg nrdoc.TMP1 vr.TMP1

26 0000000864253 PAULA 22,27 Bai 0000000864253 2,76 << aparecer somente na 1a ocorrencia

03 0000000864253 PAULA 17,85 Bai NULL NULL

01 0000000864256 PAULA 9,90 Bai NULL NULL

03 0000000864260 PAULA 71,87 Bai NULL NULL

03 0000000864261 PAULA 17,41 Bai NULL NULL

01 0000000864267 PAULA 85,61 Bai 0000000864267 5,75

01 0000000864271 PAULA 3,99 Bai NULL NULL

id=code>id=code>

Fico no aguardo.

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Editado por - miragerr on 21/09/2010 10:19:53

Editado por - miragerr on 21/09/2010 10:23:27

Link to comment
Share on other sites

Boa madrugada Jackson.

Num primeiro momento, eu separaria em 2 selects pois embora o outro método seja mais prático, não acredito ser o mais eficiente... Eu colocaria um para retornar os dados relvantes do do pedido (clientes, numero, datas, valores totais etc) e outro para puxar detalhes dos itens vendidos.

Espero ter ajudado, abraços!

assinatura.jpg

Link to comment
Share on other sites

Ola amigo Vailton

Tudo na Paz do Senhor

Veja bem o que quero é apenas que apareça somente um valor caso o NRDOC seja repetido, da forma que vc falow tambem fiz, mais com LEFT JOIN ele vai sempre colocar o valor pois tem o NRDOC lá.

HELLLP

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Link to comment
Share on other sites

Ola amigos

Vailton coloquei novos dados, dê uma olhada, e veja que nos 2 promeiros registros, o valor se repete, e é isso que não quero

Como fazer ???

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Link to comment
Share on other sites

citação:

Ola amigos

Vailton coloquei novos dados, dê uma olhada, e veja que nos 2 promeiros registros, o valor se repete, e é isso que não quero

Como fazer ???

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr


id=quote>id=quote>

Bom Jackson!!!

Vou dar a minha modesta opinão sobre o problema que vc está tendo. Não sei onde peguei(estou postando porque talvez alguém tenha como te passar) mas recebi impressa uma apostila da IBRATEC, feita por luis Fernando calabria/Erick Franklin/Leonardo Bandeira. Esta apostila é tão babaca(para alguns; prá mim não) porque ela explica detalhamente como voce fazer EQUIJUNÇÕES, JUNCOES EXTERNAS, AUTO-JUNCOES E OUTROS TIPOS DE JUNÇÕES. Confesso que no começo não dei muita atenção para esta apostila(porisso que não sei que me mandou), mas depois percebi a importancia dela.

Repito, estou postando porque alguém deve ter esta apostila zipada e possa te passar.

grato

Sds

José Carlos - ZECA

fwh612(Free)-clipper52e-blinker 7.0 - six 3.02 - Windows XP

Link to comment
Share on other sites

Ola Vailton

O que acontece é que não me traz os outros registros, só me traz os registros EXCLUIDOS

Fico no aguardo

Jackson Douglas

Boa Vista

FWH 10.05 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Link to comment
Share on other sites

Distinct não daria certo... Group By funciona, mas não sei se é uma boa prática. (com Group By eu testei uma situação semelhante com meu sistema e funcionou, como não usei nenhum SUM, ele só exibiu o primeiro registro sem totalizar nada, ou seja, do modo que você quer)

id=code>
id=code>Caso o Group By não funcione, você poderia disponibilizar algum script com a criação da tabela e alguns dados ?

Ou então faça Selects separados como o Vailton citou que ficará mais fácil de tratar cada parte...

Google-Android-48.pngLuis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Link to comment
Share on other sites

Ola Luizão

Não tem como, por causa do TIPO de VENDA, é que posso ter varias formas de pagamentos para o mesmo NRDOC

Fico no Aguardo

Jackson Douglas

Boa Vista

FWH 10.05 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Link to comment
Share on other sites

Só para ver se eu entendi, neste caso em específico você quer que a segunda linha NÃO apareça por causa do VALOR e do NRDOC, e não por causa do NRDOC somente, seria isso ?

Mas você chegou a testar com o GROUP BY ?

Group By b.nrdoc,t1.valor não daria certo ?

Bom, é como eu disse, testei uma situação parecida aqui e deu certo, mas cada caso é um caso icon_smile_big.gif

Google-Android-48.png

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com

Link to comment
Share on other sites

citação:

Só para ver se eu entendi, neste caso em específico você quer que a segunda linha NÃO apareça por causa do VALOR e do NRDOC, e não por causa do NRDOC somente, seria isso ?

Mas você chegou a testar com o GROUP BY ?

Group By b.nrdoc,t1.valor não daria certo ?

Bom, é como eu disse, testei uma situação parecida aqui e deu certo, mas cada caso é um caso icon_smile_big.gif

Google-Android-48.png

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

E-Mail: juninho.luisao@gmail.com

MSN: juninho_luisao@hotmail.com


id=quote>id=quote>

Boa tarde !!!

Não seria o caso de usar a clausula UNION ?

Sds

José Carlos - ZECA

fwh612(Free)-clipper52e-blinker 7.0 - six 3.02 - Windows XP

Link to comment
Share on other sites

citação:

citação:

Ola amigos

Vailton coloquei novos dados, dê uma olhada, e veja que nos 2 promeiros registros, o valor se repete, e é isso que não quero

Como fazer ???

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr


id=quote>id=quote>

Bom Jackson!!!

Vou dar a minha modesta opinão sobre o problema que vc está tendo. Não sei onde peguei(estou postando porque talvez alguém tenha como te passar) mas recebi impressa uma apostila da IBRATEC, feita por luis Fernando calabria/Erick Franklin/Leonardo Bandeira. Esta apostila é tão babaca(para alguns; prá mim não) porque ela explica detalhamente como voce fazer EQUIJUNÇÕES, JUNCOES EXTERNAS, AUTO-JUNCOES E OUTROS TIPOS DE JUNÇÕES. Confesso que no começo não dei muita atenção para esta apostila(porisso que não sei que me mandou), mas depois percebi a importancia dela.

Repito, estou postando porque alguém deve ter esta apostila zipada e possa te passar.

grato

Sds

José Carlos - ZECA

fwh612(Free)-clipper52e-blinker 7.0 - six 3.02 - Windows XP


id=quote>id=quote>

Pra baixar: http://www.expertaccess.com.br/forumnew/forum_posts.asp?TID=18020

Abraço,

Kleyber Derick

xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB

(98) 8162-1301 / (98) 2107-9150

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites

citação:

citação:

citação:

Ola amigos

Vailton coloquei novos dados, dê uma olhada, e veja que nos 2 promeiros registros, o valor se repete, e é isso que não quero

Como fazer ???

Jackson Douglas

Boa Vista

FWH 9.12 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr


id=quote>id=quote>

Bom Jackson!!!

Vou dar a minha modesta opinão sobre o problema que vc está tendo. Não sei onde peguei(estou postando porque talvez alguém tenha como te passar) mas recebi impressa uma apostila da IBRATEC, feita por luis Fernando calabria/Erick Franklin/Leonardo Bandeira. Esta apostila é tão babaca(para alguns; prá mim não) porque ela explica detalhamente como voce fazer EQUIJUNÇÕES, JUNCOES EXTERNAS, AUTO-JUNCOES E OUTROS TIPOS DE JUNÇÕES. Confesso que no começo não dei muita atenção para esta apostila(porisso que não sei que me mandou), mas depois percebi a importancia dela.

Repito, estou postando porque alguém deve ter esta apostila zipada e possa te passar.

grato

Sds

José Carlos - ZECA

fwh612(Free)-clipper52e-blinker 7.0 - six 3.02 - Windows XP


id=quote>id=quote>

Pra baixar: http://www.expertaccess.com.br/forumnew/forum_posts.asp?TID=18020

Abraço,

Kleyber Derick

xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB

(98) 8162-1301 / (98) 2107-9150

Visite São Luís - MA A Ilha dos Amores


id=quote>id=quote>

Olha ai Jackson !!!

Tá começando a clarear pra vc. (e pra mim também)

Sds

José Carlos - ZECA

fwh612(Free)-clipper52e-blinker 7.0 - six 3.02 - Windows XP

Link to comment
Share on other sites

Ola amigos

Bom tive que fazer da seguinte forma

ITENS EXCLUIDOS

CREATE TEMPORARY TABLE temp2

Select b.artpvend AS TIPO, v.arnomvde AS CAIXA, SUM( s.arvrvend * s.arqtdsai ) AS VALOR_PG, 'Exc' AS tipo_pago

FROM saidas AS s LEFT JOIN vendedor AS v ON arcodven = v.arcodvde LEFT JOIN boletos AS b ON b.arnrdoct = s.arnrdoct

WHERE s.ardtsaid = '2010-09-19' AND s.arexcuid = '1' GROUP BY s.arnrdoct ORDER BY CAIXA

ITENS VENDIDOS

CREATE TEMPORARY TABLE temp3

Select COALESCE( et.artpvend, b.artpvend ) AS TIPO,

v.arnomvde AS CAIXA,

COALESCE( et.arvrvend, COALESCE( b.arvrpago, b.arvrvend ) ) AS VALOR_PG,

IF( b.artpbaix = 'C', 'Can', 'Bai' ) AS tipo_pago

FROM boletos AS b LEFT JOIN vendedor AS v ON b.arcodcai = v.arcodvde

LEFT JOIN esto_53 AS et ON b.arnrdoct=et.arnrdoct

WHERE b.ardtbaix = '2010-09-19' ORDER BY CAIXA, tipo_pago

UNIAO DAS TABELAS PARA GERAR SOMENTE UMA

CREATE TEMPORARY TABLE temp4

Select * from temp2 UNION ALL Select * FROM temp3

Assim funcionou

estou quase bom nesse negocio de SQL

"tambem se não fosse o GOOOOOOGLE" hehehe

Mais se alguem precisar de ajuda estamos aqui

Jackson Douglas

Boa Vista

FWH 10.05 Lamborguini ( isso voa gente ) PellesC+xH 1.2.1 + FAST REPORT + DBFCDX + SQL 100%

email : miragerr@osite.com.br

MSN : jackson_rl@hotmail.com

SKYPE : jackson_rr

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...