¿Cómo enumero las publicaciones de blog relacionadas ordenadas por la cantidad de etiquetas comunes?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Deseo mostrar una lista de publicaciones de blog relacionadas y quiero que se ordene por la cantidad de etiquetas comunes que tienen en la publicación actual. Cada publicación puede tener múltiples etiquetas asociadas. Aquí está la estructura de mi tabla:

[Posts] < - [posts-to-tags-join-table] - > [Etiquetas]

Estoy usando PHP y MySQL. ¿Puedo hacer esto en una consulta?

¿Fue útil?

Solución

¿Qué pasa con ...:

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

suponiendo que pid como la clave principal en la tabla de publicaciones, tid como la clave principal en la tabla de etiquetas, ambas claves externas en la tabla p2t (publicar en la etiqueta)?

Otros consejos

Claro que puedes hacerlo en una 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top