none
Ajuda em Select RRS feed

  • Pergunta

  • Olá preciso da seguinte ajuda, tenho uma tabela com seis linhas, os registros desta tabela são os caminhos de seis imagens, vou exibi-las em uma página web, porém tenho uma regra, esta imagem deve ser exibida a cada dois dias, assim preciso de um select que retorne uma linha a cada dois dias.

     

    MINHAFIGURAWEB(SOMENTE 1 A CADA DOIS DIAS)

    Segunda - Linha 1 - imagem1.jpg

    Quarta - Linha 2 - imagem2.jpg

    Sexta - Linha 3 - imagem3.jpg e assim por diante.

    Quem puder ajudar agradeço muito

     

     

    quarta-feira, 27 de setembro de 2006 20:04

Todas as Respostas

  • Olá Fabio,

              Este numero de registros na tabela pode ser variável ? Ou seja, pode ser incluído mais uma imagem nessa tabela ? Caso não seja inserido tem como fazer sim, mas não é muito legal fazer tratamento fixo desse funcionamento. Eu sugiro que seja incluído uma coluna na tabela indicando a ultima vez que a imagem foi mostrada, assim ficará muito fácil de fazer. Se vc puder incluir essa coluna e não souber como fazer o select é só perguntar.

    Se esta foi a resposta para seu Post marque como Respondido
    Att
    Henrique Gurgacz
    quarta-feira, 27 de setembro de 2006 22:41
  • Olá Henrique, pode sim, eu tenho seis imagens e somente uma deve ser exibida a cada dois dias.

    Não sei fazer este Select, pode ajudar?

     

    Muito obrigado.

     

    quinta-feira, 28 de setembro de 2006 10:04
  •  

     usando um datepart(day,getdate()) -- va retornar o dia da semana depois vc. pode alocar uma imgem para cada dia ou faixa de dias, se precisae de exemplo retorne.

     

    Abs;

    quinta-feira, 28 de setembro de 2006 10:14
  • Fabio,

    Você gostaria que o próprio SQL Server selecione aleatóriamente esta imagem?

    quinta-feira, 28 de setembro de 2006 11:46
  • Olá,

           conforme solicitado um exemplo, segue abaixo:


    CREATE TABLE IMAGEM(
      CAMINHO VARCHAR(200), -- endereço da imagem
      DATAEXIB DATETIME   , -- data ultima exibição
      VEZES    int          -- quantidade de vezes que foi mostrada
    )
    GO

    INSERT INTO IMAGEM(CAMINHO, DATAEXIB, VEZES) VALUES ('C:\IMG1.JPG', '09-10-2006',0)
    INSERT INTO IMAGEM(CAMINHO, DATAEXIB, VEZES) VALUES ('C:\IMG2.JPG', '09-10-2006',0)
    INSERT INTO IMAGEM(CAMINHO, DATAEXIB, VEZES) VALUES ('C:\IMG3.JPG', '09-10-2006',0)
    INSERT INTO IMAGEM(CAMINHO, DATAEXIB, VEZES) VALUES ('C:\IMG4.JPG', '09-10-2006',0)
    INSERT INTO IMAGEM(CAMINHO, DATAEXIB, VEZES) VALUES ('C:\IMG5.JPG', '09-10-2006',0)
    INSERT INTO IMAGEM(CAMINHO, DATAEXIB, VEZES) VALUES ('C:\IMG6.JPG', '09-20-2006',0)
    GO

    -- Execute para pegar a imagem
    SELECT top 1
      *
    FROM
      IMAGEM
    WHERE
        DATAEXIB = (SELECT MIN(DATAEXIB) FROM IMAGEM)
    and VEZES in (1, 0)

    -- Execute depois de pegar a imagem, passando como parametro do codigo da imagem ou o caminho
    UPDATE
      IMAGEM
    SET VEZES = VEZES +1 ,   DATAEXIB = GETDATE()
    WHERE
        CAMINHO = 'C:\IMG1.JPG'

    Att

    Henrique Gurgacz
    quinta-feira, 28 de setembro de 2006 12:48
  • Henrique,

    Muito bom o seu script!!!

    quinta-feira, 28 de setembro de 2006 13:09
  • Henrique mas o que faz ela ser exibida a cada dois dias?
    quinta-feira, 28 de setembro de 2006 13:11
  • Tem como você mandar um exemplo?

     

    Muito obrigado

     

    quinta-feira, 28 de setembro de 2006 13:12
  • Fabio,

    Tomando como base o script do Henrique, você pode comparar se a data da exibição tem dois dias de diferença entre a data atual, utilizando a função DateDiff.

    quinta-feira, 28 de setembro de 2006 13:17
  • Olá,

            A idéia do Galvão é muito boa. De qualquer maneira vou explicar oque fiz:

    Sempre seleciono a primeira imagem que tenha a menor data ou seja, aquela que faz mais tempo que não aparece.

    Quando encontro essa imagem é feito um update nela indicando quantas vezes ela ja foi mostrada e atualizando a data de exibição. Só tem um problema no meu script, vc só pode atualizar a data de exibição se a quantidade de vezes for igual a dois e nesse caso vc atualiza a data para a data atual e ainda por cima zera a quantidade de vezes.

    Desta forma oque vai ocorrer é o seguinte:
    - É selecionado uma imagem por exemplo IMG1, a quantidade de vezes estara 0 e a data estará antiga, a primeira vez que vc pega vc atualiza o campo vezes para 1
    - Na segunda vez que é selecionada a imagem será IMG1 porque a data continua sendo a mais antiga, porem como vc irá atualizar as vezes para 2 vc deverá também atualizar a data para a data atual e zerar a quantidade de vezes.
    - Na proxima vez que for selecionar uma imagem ele não irá mais pegar IMG1 porque a data ja foi atualizada.

    A princípio isso irá funcionar numa boa.

    Att
    Henrique Gurgacz


    quinta-feira, 28 de setembro de 2006 13:26