AJUDA COM SORTEIO SQL
05/01/2016
0
Preciso realizar um sorteio de clientes com alguns parâmetros e estou precisando de ajuda.
Veja bem vamos premiar alguns de nossos clientes. Eles tem 3 opções de brindes.
Podem escolher qualquer uma, contudo o sistema sorteará aleatoriamente e considerará suas escolhas. Caso tenha sido sorteado na 1ª opção, não pode ser sorteado na 2ª nem na 3ª.
Mas se for sorteado na 2ª não pode ser na 1ª nem na 3ª e preciso também que os clientes que forem nossos maiores compradores tenham preferência sobre os brindes, uma forma de retribuir. Ah esta informação já tenho.
Assim que encerrar a quantidade de brindes o sistema não pode sortear mais.
O mais próximo que conseguir foi o comando abaixo.
SELECT * FROM clientes WHERE id ORDER BY RAND() LIMIT 1
Usando Delphi 2010 e MySQL.
Wilter Porto
Posts
06/01/2016
Raimundo Pereira
table.First;
table.MoveBy(Random(table.recordcount));
numerodametricula := table.fieldbyname(´matricula´).asinteger;
Se ajudar implemente ao seu código
06/01/2016
Raylan Zibel
- Cliente pode escolher em qual dos sorteios (brindes) quer participar?
- Só os maiores compradores podem escolher em qual vai participar ou qualquer cliente pode?
06/01/2016
Wilter Porto
qualquer cliente pode. contudo com base no volume de compras os clientes que compram mais tem preferência sobre a primeira opção de brinde.
06/01/2016
Ruy Salles
Faça o update no registro logo após o sorteio do brinde alterando o stsSorteado para 'S'
Monte o select assim:
SELECT ID, NOMCLIENTE
FROM clientes
WHERE stsSorteado = 'N'
AND id in (select round(rand() * 100,0))
Em seu sistema de sorteio, faça um loop até ele retornar uma valor não nulo
*Obs. Esta consulta foi feita levando como base da dados o MySQL
Espero ter ajudado.
06/01/2016
Wilter Porto
caso o cliente não tenha sido sorteado na churrasqueira, ele poderá concorrer na cafeteira.
07/01/2016
Ruy Salles
stsSorteado01, stsSorteado02, stsSorteado03 todos do tipo char(1) e com valor padrão 'N'
No update, verifique se o stsSorteado01 está 'S', caso positivo verifique o stsSorteado02 e caso esteja 'S' altere stsSorteado03.
Faça o select desta maneira:
SELECT ID, NOMCLIENTE
FROM clientes
WHERE (stsSorteado01 = 'N' or stsSorteado02 = 'N' or stsSorteado03 = 'N')
AND id in (select round(rand() * 100,0))
Espero ter ajudado.
Clique aqui para fazer login e interagir na Comunidade :)