Ir para conteúdo

Arquivado

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

yourwebmaker

JOIN e WHERE em relacionamento N:M

Recommended Posts

Olá pessoal,

Bom...

Tenho um model N:M mais ou menos assim:

content

content_id

title

 

content_has_category

content_id

category_id

 

category

category_id

name

 

Tenho uma página que lista esse content à partir do ID, coisa normal.

 

Só que preciso montar query que liste todos os contents de acordo ao content exibido e só liste os contents que pertecem à mesma categoria que esse possui.

 

Na prática, ao exibir uma notícia com categoria Esporte, Meio Ambiente e Saúde, só mostre notícias relacionadas a esporte, meio ambiente e saúde. Se for uma notícia só de saúde, só mostra saúde.

 

Se puderem ajudar, ficarei muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue resposta!

 

# Para buscar aleatoriamente
SELECT c.title
FROM content_has_category chc
INNER JOIN content c USING (content_id)
WHERE category_id = ANY (SELECT category_id FROM content_has_category WHERE content_id = XXX)
ORDER BY RAND()


# Para buscar na ordem decrescente
SELECT c.title
FROM content_has_category chc
INNER JOIN content c USING (content_id)
WHERE category_id = ANY (SELECT category_id FROM content_has_category WHERE content_id = XXX)
ORDER BY content_id DESC


# Caso tenha os valores das categorias da materia corrente
SELECT c.title
FROM content_has_category chc
INNER JOIN content c USING (content_id)
WHERE category_id IN (VALORES_DA_CATEGORIA_DA_MATERIA_EM_STRING)
ORDER BY RAND()
LIMIT 10

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.