Jump to content


Photo

Selecionar Ultimos 6 Ganhadores


  • Faça o login para participar
3 replies to this topic

#1 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 30/07/2009, 17:59

Galera estou com dúvida pra montar a query mysql, na verdade pra fazer a verificação se o usuario foi ganhador no ultimo 6 meses.

Tenho a tabela usuario: id_usuario
Tenho a tabela ganhador: id_ganhador,id_usuario,data

A cada mês 1 id_usuario,data(data em que ganhou) é adicionado na tabela ganhador, gostaria fazer a seguinte se o $id_usuario não for encontrado nos ultimos 6 registros na tabela ganhador então realiza a ação.

Como posso fazer a queria pra fazer isto? Eu pensei em fazer usando php, dando um select na tabela ganhador e comparando 1 por 1 pra ver se é igual ao $id_usuario

O que acham? Alguem me da uma luz?

Edição feita por: corvox, 31/07/2009, 15:38.


#2 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 30/07/2009, 21:45

A cada mês 1 ganhador é adicionado na tabela ganhador, gostaria fazer a seguinte se o $id_usuario não for encontrado nos ultimos 6 registros na tabela ganhador então realiza a ação.


Você quer selecionar os usuários que não ganharam então.
Tente assim:

SELECT u.id_usuario, g.id_usuario, (SELECT COUNT(*) FROM ganhadores WHERE id_usuario = u.id_usuario) AS total FROM usuarios AS u, ganhadores AS g HAVING total = 0

Ou seja, ele vai fazer uma contagem na tabela ganhadores, de acordo com o ID_usuario, e salvar em uma variável chamada total. Se total for igual a 0, quer dizer que determinado usuário não é ganhador, então você lista e executa a ação com o PHP.

Qualquer dúvida, só dizer.
Não testei, portando, não garanto. Mas a teoria é essa :)

Até mais ^_^

Edição feita por: Dudu, 30/07/2009, 21:46.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#3 corvox

corvox

    That's No Easy Way Out

  • Usuários
  • 434 posts
  • Sexo:Masculino

Posted 31/07/2009, 15:25

Dudu, primeiramente obrigado pela rapidez de sua ajuda!

Entendi o que fez, mas ai que ta o problema como poderia definir o intervalo de 6 meses? Ou seja 6 registros, para isto dei uma editada no tópico acima e adicionei na tabela ganhador o campo data que representa a data em que o usuario ganhou.

Acho que com o campo data ficaria mais facil, o que acha? Tem a função between que verifica o intervalo mas se chegar no mês 7 dae já tenho que começar a tratar com anos e não sei fazer isto :S

Edição feita por: corvox, 31/07/2009, 15:45.


#4 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 01/08/2009, 16:34

Utilize DATA_DIFF.
Faça uma operação de subtração com a data atual e a data no banco.
Lembre-se que a data tem que estar no formado DATE (yyyy-mm-dd).

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq