Ir para conteúdo

POWERED BY:

Arquivado

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

oten

Usando "not exists"

Recommended Posts

Estou tentando fazer um select usando o "not exists"

 

eu tenho um sql ja que me retorna as 3 últimas noticias destaque(tenho uma flag no banco onde o cara marca se quer deixar a noticia como destaque ou não) que vão aparecer num slider na pagina principal, mas na mesma página eu tenho listagens de notícias separadas por categorias. E segundo meu cliente não deve haver duplicidade, logo se a notícia ta la como destaque ela nao deve aparecer na listagem de noticias de baixo. O negocio é que são só 3 destaques e assim que eu adiciono outra noticia como destaque uma daquelas que estava antes "deixa de ser destaque" e tem que aparecer na listagem de baixo.

 

O sql para cada listagem de noticias que montei é esse(vou trocando só o idCaderno de cada):

 

select distinct * from noticias where noticias.idCaderno = 2 and status = 1 and destaque = 1 and not exists (

select noticias.id, cadernos.nome2, noticias.dataHora, noticias.fonte, noticias.chapeu,

noticias.titulo, noticias.subtitulo, noticias.foto, noticias.fotoCredito, noticias.fotoLegenda,

noticias.texto, noticias.destaque, noticias.status

from noticias

inner join cadernos

on noticias.idCaderno = cadernos.id

where noticias.destaque = 1 and noticias.status = 1

order by noticias.dataHora desc

limit 0,3)

order by noticias.dataHora desc

limit 0,3;

 

sendo que o select do slider é:

 

select noticias.id, cadernos.nome2, noticias.dataHora, noticias.fonte, noticias.chapeu,

noticias.titulo, noticias.subtitulo, noticias.foto, noticias.fotoCredito, noticias.fotoLegenda,

noticias.texto, noticias.destaque, noticias.status

from noticias

inner join cadernos

on noticias.idCaderno = cadernos.id

where noticias.destaque = 1 and noticias.status = 1

order by noticias.dataHora desc

limit 0,3);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria bem mais simples fazer assim?

- Seleciona as notícias para o slider

- Seleciona as notícias para o restante, excluindo as selecionadas para o slider

//slider
SELECT * FROM noticias ORDER BY dataHora LIMIT 3

 

Pege o id das 3 notícias selecionadas e faça:

//restante
SELECT * FROM noticias WHERE id NOT IN(id1, id2, id3) ORDER BY dataHora

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.