Jump to content


Photo

Ajuda Com Esse Select


  • Faça o login para participar
4 replies to this topic

#1 enthroned

enthroned

    eh noizeh!

  • Usuários
  • 257 posts
  • Sexo:Não informado

Posted 09/02/2009, 22:21

e ai pessoal, to com uma duvidazinha aqui num select!!

tenho 3 tabelas :

noticia -> id_noticia, titulo, data...
noticia_categoria -> id, nome
noticia_comentario -> id_comentario, id_noticia, comentario...


quero fazer um select pra me retornar as 5 noticias mais comentadas...só to me perdendo onde fazer o count etc...alguem pode me ajudar??

abrs
=]

#2 dddj

dddj

    Normal

  • Usuários
  • 112 posts
  • Sexo:Masculino
  • Localidade:Campo Grande

Posted 10/02/2009, 09:03

Opa tenta isso aki ó

Select top 5 COUNT(c.id_noticia) as total,c.id_comentario,c.id_noticia, n.titulo, n.data
FROM noticia_comentario c
INNER JOIN noticia n ON c.id_noticia = n.id_noticia
GROUP BY c.id_noticia,c.id_comentario,n.titulo, n.data
ORDER BY COUNT(c.id_noticia) DESC

Edição feita por: dddj, 10/02/2009, 09:12.

Djavan Loureiro - SEO Marketing - Search Engine Optimization - Otimização de Sites
Coloque seu site no topo dos sistemas de busca - Projeto SEM - Visitem o site.

#3 enthroned

enthroned

    eh noizeh!

  • Usuários
  • 257 posts
  • Sexo:Não informado

Posted 10/02/2009, 09:24

nao funcionou...

eu nunca vi isso ali, existe "select top 5" ?? hehehe

eu dei uma arrumada e funcionou em partes...mas esse teu SQL soh pega a noticia e ordena...eu precisaria de mais um join ou algo assim pra pegar o nome da categoria na outra tabela...
=]

#4 dddj

dddj

    Normal

  • Usuários
  • 112 posts
  • Sexo:Masculino
  • Localidade:Campo Grande

Posted 10/02/2009, 10:06

Desculpa coloquei o sql que funciona no SQL SERVER. No Mysql vc tem que usar o limit

Select COUNT(c.id_noticia) as total,c.id_comentario,c.id_noticia, n.titulo, n.data, ct.nome FROM noticia n 
INNER JOIN noticia_comentario c ON c.id_noticia = n.id_noticia
INNER JOIN noticia_categoria ct ON ct.id_categoria = n.id_categoria
GROUP BY c.id_noticia,c.id_comentario,n.titulo, n.data,ct.nome 
ORDER BY COUNT(c.id_noticia) DESC
LIMIT 5

Edição feita por: dddj, 10/02/2009, 10:07.

Djavan Loureiro - SEO Marketing - Search Engine Optimization - Otimização de Sites
Coloque seu site no topo dos sistemas de busca - Projeto SEM - Visitem o site.

#5 enthroned

enthroned

    eh noizeh!

  • Usuários
  • 257 posts
  • Sexo:Não informado

Posted 10/02/2009, 10:21

blz...valeu!!

eu dei uma ajeitada e ficou assim:

SELECT COUNT( c.id_noticia ) AS total, c.id_noticia, n.titulo, n.data_hora, ct.nome
FROM iv_noticias n
INNER JOIN iv_noticia_comentario c ON c.id_noticia = n.id_noticia
INNER JOIN noticias_categorias ct ON ct.id = n.id_categoria
GROUP BY c.id_noticia
ORDER BY total DESC
LIMIT 5

dai ficou como eu queria....valeu pela ajuda!!
=]




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq