Ir para conteúdo

POWERED BY:

Arquivado

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

janick

[Resolvido] Retornar um segundo resultado

Recommended Posts

Olá,

 

estou com uma dúvida simples sobre sql,

 

gostaria de saber como faço para retornar o segundo resultado de uma tabela.

 

tenho uma galeria de fotos, e retorno a ultima cobertura, isto é, a atual, e tenho uma parte com as mais clicadas da semana passada. entao queria que automaticamente, quando inserir uma nova, ele ler a penultima cobertura em mais clicadas.

 

meu select está assim:

 

$sql_mais = mysql_query

("

SELECT *
FROM imagens
WHERE id_galeria = ".$x['id_galeria']."
ORDER by cliques DESC
LIMIT 4

");

dá pra ter uma noção, se precisarem de mais informação pergunta aê.

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostaria de saber como faço para retornar o segundo resultado de uma tabela.

qual é o campo que indica que é o mais recente? é o id??

 

se for o id

select * from imagens
where id = (select max(id) - 1 from imagens)

que o max() do sub select pega o maior valor que seria o atual, por isso colocar o '- 1'

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, o problema é que os numeros de id mudam, pois são varias galerias, ai se eu tenho como ultima galeria a de id 40, e a minha segunda depois dessa é a 35.

 

neste caso, se eu colocar o -1, ele vai para a 39 certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e o que define qual é a mais recente ou mais antiga?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o id, o ultimo id é a que está em destaque.

E o penultimo, não necessariamente seguindo uma ordem nos numeros, é o que mostra as fotos mais clicadas da semana que passou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria parecido com o que o Napraia postou

 

SELECT * FROM imagens WHERE id < ( SELECT MAX(id) FROM imagens) ORDER BY id DESC

 

Teste

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um subselect para pegar o maior id, e depois outro para pegar o segundo maior

 

select * from imagens
where id = (select max(id) from imagens 
				  where id not in (select max(id) from imagens)
order by desc

isso deve resolver

só uma coisa, esse id que eu coloquei não pode ser da foto, tem que ser o id da galeria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como fez exatamente entoa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz dois select, um entrando na galeria, pegando todos os id´s diferente do ultimo e ordenando por id DESC

 

e outro entrando na tabela de imagens, buscando em id_galeria, a que for igual ao resultado do select de cima!

 

deu certo =), eu sei que são dois selects, mas eu realmente nao consegui fazer com um só. vou para depois pra pensar mais em cima disso!

 

obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal,

depois posta os dois selects aí que de repente dá para juntar e fazer num só.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Traqnuilo entao

se quiser pode fazer o sugerido pelo napraia que provavelmente é possivel simplificar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim:

 

$sql_galeria = mysql_query

("
	
SELECT *
FROM galeria
WHERE status = 'on' AND id != ".$flash['id_galeria']." // difere da galeria que está atualmente como destaque
ORDER by id DESC

");

$x = mysql_fetch_assoc($sql_galeria);

$sql_mais_clicadas = mysql_query

("

SELECT *
FROM imagens
WHERE id_galeria = ".$x['id']." AND status = 'on'
ORDER by cliques DESC
LIMIT 4

");

é isso, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.