miragerr Posted September 20, 2010 Report Share Posted September 20, 2010 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 Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 20, 2010 Author Report Share Posted September 20, 2010 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 Quote Link to comment Share on other sites More sharing options...
vailtom Posted September 21, 2010 Report Share Posted September 21, 2010 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! Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 21, 2010 Author Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 21, 2010 Author Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
vailtom Posted September 21, 2010 Report Share Posted September 21, 2010 Vou chutar, se errar me perdoe. Mas RIGHT JOIN dá o efeito que vc precisa? Quote Link to comment Share on other sites More sharing options...
ZECA Posted September 21, 2010 Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 21, 2010 Author Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
Luisão Posted September 21, 2010 Report Share Posted September 21, 2010 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... 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 Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 21, 2010 Author Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
Luisão Posted September 21, 2010 Report Share Posted September 21, 2010 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 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 Quote Link to comment Share on other sites More sharing options...
ZECA Posted September 21, 2010 Report Share Posted September 21, 2010 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 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 Quote Link to comment Share on other sites More sharing options...
kleyber Posted September 21, 2010 Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
ZECA Posted September 21, 2010 Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 21, 2010 Author Report Share Posted September 21, 2010 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.