Ir ao conteúdo
  • Cadastre-se

Selec Mysql


adesign

Posts recomendados

Seguinte pessoal.

Tenho uma tabela que armazena datas, exemplo:

20/03/2007

18/03/2007

24/02/2007

17/01/2007

02/10/2004

Preciso fazer uma consulta nesses registros que me traga o último mês cadastrado do ano alvo.

Por exemplo, quero saber quais os registro do último mês cadastrado de 2007. Deveria me trazer isso:

20/03/2007

18/03/2007

Alguem pode me ajudar? Já tentei bastante coisa e pode ser que tenha passado algo desapercebido ou então falta de conhecimento meu sobre algum comando especifico.

Fico no aguardo.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Eu fiz um teste aqui na correria com um scritp e rodou, veja aí se resolve teu problema:

Considerei que o banco tem uma coluna no formato DATE, o restante das colunas não interfere...

<?

// considerei o ano alvo o atual, depois veja como melhor definir esta variável para seu caso
$ano_alvo = date('Y');

// conexao normal
   $host = "local";
   $user = "usuario";
   $pass = "senha";
   $db = "seubanco";

   $link = mysql_connect($host,$user,$pass) or die;
   mysql_select_db($db, $link);

// aqui a ideia é começar a pesquisar pelo mês 12, e ir decrementando até chegar no mês 01
for($i=12;$i>=1;$i--) {

// pesquiso pelos dois valores: o ano E a data
// considerando que o campo DATE tem o nome 'data'
$consulta = "SELECT * FROM teste_data WHERE (YEAR(data) = '$ano_alvo') AND (MONTH(data) = '$i') ORDER BY data DESC";
$query = mysql_query($consulta,$link);

// eu só executo os comando abaixo se for retornada ao menos 01 linha
if(mysql_num_rows($query) > 0) {

    while($resultados = mysql_fetch_array($query)) {
      ... seus comandos ...
    }

// e se ele encontrar um registro eu aproveito e quebro a cadeia
    break;
}
}
// fecho o link
mysql_close($link);

?>

Lembre-se de que eu fiz um mini-teste por aqui, depois diga se deu certo ou não, mas é o script mais simples e prático que imaginei...

Link para o comentário
Compartilhar em outros sites

Opa,

Primeiramente gostaria de agradecer a resposta, mas acabei achando uma solução para meu dilema.

Como mês e anos são números resolvi usar no mysql aquela função max() e então fiz o seguinte.

Primeiro achei o máximo valor do mês com o ano_alvo

"Select max(month(data) from bd where year(data) = "2007";

E depois que achei o mês com maior valor do ano de 2007 eu imprimi meus dados.

Mas tive que fazer dois select e agora queria saber se tem como resumir tudo em um select.

Mas mesmo assim gostei da sua solução. Irei guarda-la para testes futuros.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!