Ich habe diese Tabellen: Beiträge (post_is, Titel und Text), Tags (tag_id, Tag), Post_tag_nn (id, tag_id, post_id). Ich möchte für einen bestimmten Beitrag zum Beispiel 4 Tags alle Beiträge mit diesen Tags, dann alle Beiträge mit drei dieser Tags, dann alle Beiträge mit zwei dieser Tags und so weiter. Wie kann ich eine SQL-Abfrage für diesen Zweck erstellen (in PHP scheint es wie ein Backtracking-Problem = alle Teilmengen einer bestimmten Menge).Finden Sie die Beiträge durch Tags mit einem bestimmten Beitrag in Mysql
Antwort
Haben Sie eine Abfrage, um die Tags des aktuellen Beitrag zu finden, so etwas wie
SELECT tag_id
FROM Post_tag_nn
WHERE post_id = $post_id;
Dann diese Tag-IDs verwenden, diese Abfrage sollten Sie die IDs der Beiträge mit 4,3,2 zurückkehren, ... Passende Tags:
SELECT post_id, COUNT(post_id) AS tag_count
FROM Post_tag_nn
WHERE tag_id IN ($array_of_tag_ids)
GROUP BY post_id
ORDER BY tag_count DESC;
Wenn Sie jeden Beitrag mit nur einem einzigen der Tags abrufen möchten, sollten Sie am besten eine einzige Abfrage pro Tag ausführen, um alle Posts mit diesem Tag zu erfassen und dann zu generieren Das setzt sich selbst.
Ich bin auf der Suche nach einer SQL-Methode, um dies zu tun, etwas effizienter als nur harte Codierung. – Daniel
Etwas wie:
select t.id, t.tag_id, p.post_id, p.title, p.text
from post_tag_nn as t, posts p
where p.id = t.post_id
order by t.id
Und dann tun die Gruppe in Ihrem Code. Sie können natürlich zwei verschiedene Abfragen ausführen, eine, bei der Sie die Reihenfolge und Anzahl Ihrer Tags herausfinden und dann eine, bei der Sie den Post für jedes Tag zurückziehen.
- 1. So wählen Sie Beiträge mit bestimmten Tags/Kategorien in WordPress
- 2. Holen Tumblr Beiträge mit bestimmten Tags
- 3. MySQL Finden Sie die Gesamtanzahl der Beiträge pro Benutzer
- 4. Paginieren Beiträge nach Tags
- 5. Ähnliche Datensätze finden Sie mit Tags
- 6. Geben Sie einen Kommentar zu einem bestimmten Beitrag in PHP
- 7. Erstellen Sie einen Beitrag in Wordpress mit einem externen Skript
- 8. Wie können Sie Beiträge von bestimmten Benutzern verbergen?
- 9. Tags auf Beiträge erstellen RAILS
- 10. MySQL - Finden Sie Hotels, die an bestimmten Daten verfügbar sind
- 11. MySQL COUNT() Beiträge insgesamt innerhalb eines bestimmten Kriterien?
- 12. Abrufen der Tags für einen Beitrag aus einem Wordpress-Plugin
- 13. MySQL: Passende Objekte durch ihre gemeinsame Tags
- 14. in MySQL von einem bestimmten Feld (getrennt durch Komma)
- 15. Finden Sie alle Methodenaufrufe mit einem bestimmten Parametertyp mit IntelliJ
- 16. Tag-Beiträge in Wordpress (wenn Sie nur die Postschnecken kennen)
- 17. WP: letzte einzelne Beiträge aus bestimmten Kategorien
- 18. PHP: Finden Sie Teilstrings, wrap in Tags mit dynamischen Attributen
- 19. Wie alle subreddit Beiträge in einem bestimmten Zeitraum kratzen
- 20. Regex Worte zu finden, die mit einem bestimmten Zeichen beginnen
- 21. Jekyll ignoriert Flüssigkeit Tags innerhalb Beiträge
- 22. Wie lese ich Tags in einem Jekyll Post durch?
- 23. die Beiträge in einer Vorlage Ausgabe wird Tags darunter verhindert
- 24. Finden neuesten Aktienkurse in einem bestimmten Zeitraum
- 25. Wie durch Tags in Lucene.NET Ähnliche Artikel finden
- 26. Finden Sie Dateien mit einem bestimmten Namen schnell
- 27. Finden Sie den nächsten Tag zu einem bestimmten Zeitpunkt
- 28. So finden Sie die indirekten Knoten, die mit einem bestimmten Knoten in Spark Graphx verbunden sind
- 29. Finden Sie den ersten Knoten mit einem bestimmten Attributwert
- 30. Finden Sie alle Lucene Dokumente mit einem bestimmten Feld
Es funktioniert. Vielen Dank! – Daniel