Wie stelle ich im Zusammenhang Blog-Beiträge durch die Anzahl der gemeinsamen Tags bestellt?

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

  •  03-07-2019
  •  | 
  •  

Frage

Ich möchte eine Liste von verwandten Blog-Posts anzuzeigen, und ich möchte, dass die Liste mit der Anzahl der gemeinsamen Tags bestellt werden sie auf den aktuellen Posten haben. Jeder Beitrag kann mehrere Tags müssen zugeordnet. Hier ist meine Tabellenstruktur:

[Beiträge] <- [Beiträge-to-Tags-joining-Tabelle] -> [Schlagwörter]

Ich bin mit PHP und MySQL - kann ich tun dies in einer Abfrage

?
War es hilfreich?

Lösung

Was ist mit ...:

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

unter der Annahme, pid als Primärschlüssel in der Tabelle Beiträge, tid als Primärschlüssel in der Tabelle Tags, die beiden Fremdschlüssel in dem p2t (Post zu markieren) Tabelle?

Andere Tipps

Natürlich können Sie es in einer Abfrage tun:

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; 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top