Ir para conteúdo

POWERED BY:

Arquivado

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

Bergs

[Resolvido] Select tabelas

Recommended Posts

Segue o exemplo da situação:

 

- listar posts (por categoria)

- dentro destes posts (na listagem) informar número de comentários por post.

 

Já consegui listar os posts, a variável $id seta a categoria via $_GET:

$sql = "SELECT * FROM posts WHERE id_cat = $id AND status = 1 ORDER BY id DESC";

 

A tabela coments tem uma linha de referência ao post.

Consigo informar o número de comentários apenas na página individual do post, não estou conseguindo informar o número de comentários na listagem dos posts.

 

Como relacionar as tabelas coments e posts?, tentei usar o INNER JOIN só que não funcionou, está duplicando os posts e perco a referência da variável $id (índice das categorias).

$sql = "SELECT posts.*, coments.* FROM posts INNER JOIN coments ON posts.id_cat = coments.id_post ORDER BY posts.id DESC";

 

E onde aplicar o count dos comentários?

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = "SELECT p.*, (SELECT COUNT(c.id) as total coments WHERE c.id_post = p.id GROUP BY c.id_post) as total_posts FROM posts p
WHERE p.id_cat = $id AND p.status = 1 ORDER BY p.id DESC";

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = "SELECT p.*, (SELECT COUNT(c.id) as total coments WHERE c.id_post = p.id GROUP BY c.id_post) as total_posts FROM posts p
WHERE p.id_cat = $id AND p.status = 1 ORDER BY p.id DESC";

 

@ESerra, não funcionou. fiquei voando nessa parte:

 

(SELECT COUNT(c.id) as total coments WHERE c.id_post = p.id GROUP BY c.id_post) as total_posts FROM posts p

Você pode explicar seu código?

 

Grato pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É apenas uma subquery com o count do ID da tabela dos comentários, não funcionou? Retornou algum erro? Não retornou nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO, o que estava dando errado foi o primeiro (as total) alterei para FROM e funcionou.

 

$sql = "SELECT p.*, (SELECT COUNT(c.id) FROM coments c WHERE c.id_post = p.id GROUP BY c.id_post) as total_posts FROM posts p WHERE p.id_cat = $id AND p.status = 1 ORDER BY p.id DESC";

 

Obrigado pela força!

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.