Como faço para listar posts relacionados ordenadas pelo número de marcas comuns?

StackOverflow https://stackoverflow.com/questions/818551

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu quero exibir uma lista de posts relacionados e quero que a lista seja ordenada pelo número de tags comuns que têm para o cargo atual. Cada post pode ter várias marcas associadas a ele. Aqui está minha estrutura de tabela:

[mensagens] <- [mensagens-to-tags de juntar-table] -> [tags]

Eu estou usando PHP e MySQL -? Eu posso fazer isso em uma consulta

Foi útil?

Solução

E sobre ...:

SELECT COUNT(*) AS numcommon, posts.pid, posts.post FROM posts
               INNER JOIN p2t ON p2t.pid = posts.pid
               WHERE p2t.tid IN
               (SELECT p2t.tid FROM p2t
               INNER JOIN posts ON p2t.pid = posts.pid
               WHERE posts.pid = 1)
               AND posts.pid != 1
               GROUP BY posts.pid
               ORDER BY numcommon

assumindo pid como a chave primária na tabela de mensagens, tid como a chave primária na tabela de marcas, ambas as chaves estrangeiras na P2T (post a tag) mesa?

Outras dicas

Claro que você pode fazê-lo em uma consulta:

SELECT postid, count(tagid) as common_tag_count
FROM posts_to_tags
WHERE tagid IN (SELECT tagid FROM posts_to_tags WHERE postid = 2)
GROUP BY postid ORDER BY common_tag_count DESC; 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top