ich Probleme habe eine MySQL-Abfrage bildet, die folgende Aktion ausführt:MySQL Query ein „bump-System“ für ein Forum zu schaffen, ich bin machen
Wählen Sie alle threadIDs aus der Threads Tabelle Bestellung durch den Zeitstempel (in absteigender Reihenfolge) des letzten Posts (größter Zeitstempel) mit threadID gleich der threadID jedes threads. Also im Grunde möchte ich durch die Threads gehen und MySQL die Datenbank für Thread 0 überprüfen lassen. Es überprüft dann alle Beiträge, die threadID von 0 haben und sortiert thread0 basierend auf dem größten Zeitstempel der Beiträge innerhalb von thread0. Dann wiederholt es dies für thread1, thread2 usw. und sortiert sie entsprechend.
Ist das überhaupt möglich? Es wird der "Bump-System" -Effekt des Forums erzeugt, wo der zuletzt aktive Thread kontinuierlich an den Anfang der Liste gestoßen wird, bis der Thread ausstirbt, und dann nach unten fällt. Früher habe ich eine andere Implementierung verwendet, in der ich einen lastActivity-Zeitstempel in der Thread-Tabelle gespeichert und aktualisiert habe, als ein neuer Beitrag in den Thread gesendet wurde, aber diese Abfrage würde die Dinge viel effizienter machen.
Vielen Dank! Hier sind zwei Tabellen relevant: Threads und Posts. Die Posts haben ein threadID-Feld, in dem die ID des Threads gespeichert ist, zu dem es gehört, und es hat auch ein Timestamp-Feld. Threads hat eine Feld-Thread-ID, die der Thread-ID des Posts entspricht.
Haben Sie das versucht? IIRC, MySQL unterstützt nicht die Verwendung von LIMIT in einer Unterabfrage. –
Sicher habe ich. MySQL unterstützt LIMIT innerhalb einer IN-Unterabfrage nicht, es ist in Ordnung, wenn eine einfache Unterabfrage mit Gleichheitsbedingung verwendet wird. – Quassnoi