Inquiridor
Ajuda em Select

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
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 -
-
-
-
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 -
-
-
-
-
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