PROCURAR REGISTROS ALEATORIAMENTE

CSAPI1 18/08/2015 10:00:08
#450171
Pessoal veja se alguém pode me ajudar na solução de um problema que estou enfrentando, tenho uma aplicativo que possui um banco de dados mysql, onde tem uma tabela com os seguintes campos: N.Venda,Data e Valor. O que eu preciso é digitar um certo valor e o aplicativo procurar no banco aleatoriamente um conjunto de registros por Valor que mais se aproximo do valor digitado,listando todos os registro para mim. Algum poderia me ajudar nesta tarefa.
Seria assim:
Tabela: Venda
Nº.Venda Data Valor
0000189 29/08/2013 1.316,00
0000190 30/08/2013 20.862,70
0000191 30/08/2013 8.955,00
0000192 30/08/2013 7.601,70
0000194 30/08/2013 3.500,00
0000195 30/08/2013 11.200,00
0000197 30/08/2013 25.373,47
0000202 04/09/2013 15.910,00
0000204 04/09/2013 1.950,00
0000234 10/09/2013 3.039,40
0000235 10/09/2013 11.777,30

Eu digito por exemplo um valor de: R$ 49.300,00 o aplicativo procura no banco de dados e me fornece a seguinte resposta:
Nº.Venda Data Valor
0000190 30/08/2013 20.862,70
0000194 30/08/2013 3.500,00
0000195 30/08/2013 11.200,00
0000204 04/09/2013 1.950,00
0000235 10/09/2013 11.777,30

Pois a soma destas vendas tem como resultado: R$ 49.290,00 que é um valor que se aproxima de: R$ 49.300,00 que foi o valor digitado.

Alguém teria uma solução para isso em VB6.?
ASHKATCHUP 18/08/2015 13:39:22
#450180
Basicamente tu vai utilizar isso:
SELECT * 
FROM Venda
ORDER BY RAND()
LIMIT 1


Esse código vai te retornar UMA linha aleatória do banco de dados. Então, tu salva o valor da venda e repete a SQL até que a soma chegue perto do valor informado.
FILMAN 18/08/2015 20:23:32
#450195
O que você quer não é muito viável, pois você pode perder performance no banco de dados!
Pense comigo o que você representou está muito simples, mas imagina isso se eu tiver vendas de valores menores as combinações podem ser diversas!
Outra situação é quantidade de registros nessa tabela imagina essa rotina depois de uns 10 anos.

Vamos fazer o seguinte, posso te ajudar a pensar em uma circunstância nova! Me explica qual a intenção de fazer isso, ou seja para que seria essa informação?

Não Recomendo fazer isso!
Pense em alguma alternativa paliativa para o que pretende.
OMAR2011 18/08/2015 20:30:41
#450196
A consulta dele é tão esquisita por ser de forma aleatória.
Qual é o objetivo de uma consulta?
Consulta desta forma não tem sentido.
Bem estranho.
CSAPI1 19/08/2015 08:01:40
#450209
Colegas a minha consulta e resultado do seguinte: faço varias vendas para um determinado cliente e faço as entregas com nota de entrega, então periodicamente o meu cliente me fornece um determinado valor para que eu fature e eu tenho de emitir a nota fiscal baseado nas entregas que eu ja fiz, então tenho que pegar as notas de entrega que mais se aproxime do valor dado pelo meu cliente para faturar e não posso pegar so as ultimas notas ou so as primeiras tenho que pegar as notas de entrega mais antigas como as mais novas também, após o faturamento as notas de entrega são excluídas do banco de dados então não acumulará tantas notas assim.

Alguém então pode me ajudar
FILMAN 19/08/2015 13:48:06
#450223
Entendi o seu caso!
No entanto existe uma forma de fazer isso e não ficar criando rotinas dessa maneira que com certeza terá problemas depois!

Faz o seguinte, crie um módulo de vinculado com essa quitação de valores que você tem. Esse módulo será um controle de saldo do cliente.

Sempre que você emitir uma nota de entrega dá baixa nela como entregada e o saldo é atribuído ao cliente!
Toda vez que o cliente pagar um determinado valor você subtrai desse saldo não descendo na tabela de notas!

Outra ideia é você passar uma listagem para os clientes e eles determina as notas que eles querem pagar partindo das mais antigas!
Faça seu login para responder