oten 0 Denunciar post Postado Outubro 21, 2011 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
Henrique Barcelos 290 Denunciar post Postado Outubro 22, 2011 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