Gans 0 Denunciar post Postado Outubro 13, 2009 Olá pessoal, tenho a seguinte situação: O usuário vai ganhando bônus, quando chega a 5 bônus esses 5 bônus são convertidos em um premio. Então tenho a seguinte tabela: Tabela: bonus ID | ID_usuario | status 1 | 5 | 0 2 | 5 | 0 Eu precisaria de um comando que retornasse apenas os usuários que tem mais de 5 registros com status 0, e se o usuário tiver mais que 5 separar por grupos de 5... Fiz o seguinte código: SELECT COUNT(id_usuario) AS n_bonus, id_usuario,status FROM bonus WHERE status = '0' AND n_bonus > '5' GROUP BY id_ben LIMIT 5 Porem da erro no n_bonus > '5' e não separa por um conjunto de 5, alguem teria uma solução? Obrigado Edit: Consegui dar uma melhorada: SELECT COUNT(id_usuario) AS n_bonus, id_usuario,status FROM bonus WHERE status = '0' GROUP BY id_ben HAVING COUNT(id_usuario) > 5 Agora aparece só os usuários que tem mais que 5, porem se tenho um usuario que tem 10 precisaria exibir duas vezes as 5... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 Qual banco de dados? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 14, 2009 Opa Matias, desculpe, não sei se entendeu bem o que disse acima, li agora e está meio confuso... Os representantes vão ganhar bônus se atingirem a meta, se ele tiver 5 bônus cadastrados na tabela, o sistema "usa" esses bônus (muda o status para 1) e então cria em outra tabela que ele ganhou 1 premio. Então todo dia vou executar uma pagina e ela deveria procurar todos que tem 5 ou mais bônus e "usar" 5 bônus e adicionar 1 em premio, se tiver 10 ele usaria os 10 e daria 2 em premio e assim por diante... Minha lógica atual (eu sei fazer) seria o seguinte, ao clicar na pagina ele procuraria todos os usuários e dentro do WHILE, para cada usuário verificaria quantos bônus ele tem e transformaria cada 5 bônus em 1 premio. Porem na medida que tenha muitos usuários isso seria inviável, então estou tentando montar essa lógica... A tabela do banco de dados chama: bonus e tem os seguintes campos: ID, ID_usuario e STATUS. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 Refaço a pergunta. Qual banco de dados? Mysql? Sql Server? Firebird? Oracle? Postgre? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 14, 2009 Ops, falto isso... é MySQL :unsure: Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 Como você quer fazer tudo em uma consulta só, vou mover para a área correta que lá o pessoal poderá te ajudar melhor. Tópico Movido PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mysql Compartilhar este post Link para o post Compartilhar em outros sites