commenting

___ qstnhdr ___ Kommentar-Threading mit Score Factoring ___ answer16494605 ___

Code unten sieht gut für Ihre Aufgabe aus. Es ist ein bisschen komplex, aber es war eine Herausforderung für mich, es in einem einzigen %code% zu machen. Sie können es in mehrere %code% mit Prefetch in temporäre Tabellen (für Leistungszwecke) aufteilen oder zusammenhalten.

Danke für die Frage, es war interessant!

Bitte beachten Sie, dass %code% für Wurzelknoten %code% , nicht %code% sein muss.

%Vor%

In dieser Abfrage mache ich folgendes:

  1. In CTE_1 berechne ich Ordering-Positionen innerhalb desselben übergeordneten Kommentars (basierend auf Votes) und erstelle einen Baumpfad, um Informationen über alle Knoten in der Hierarchie zu sammeln.
  2. In CTE_2 berechne ich die Anzahl der Nachkommen, die zu jedem Knoten +1 gehören. Der Baumpfad erlaubt das Zählen von Nachkommen aller Ebenen um 1 %code% .
  3. In CTE_3 berechne ich die gesamten Bestellpositionen basierend auf 3 einfachen Regeln:
    1. Die oberste Zeile hat %code%
    2. Der obere untergeordnete Knoten hat %code%
    3. Das nächste Geschwister sollte nach allen Descendatns des vorherigen Geschwisters gehen und hat %code%

BEARBEITEN Dieselbe Lösung, aber ohne CTE.

%Vor%     
___ answer9215497 ___

Obwohl Sie nicht direkt mit Ihrer Frage in Verbindung stehen, würde ich vorschlagen, zum Nested Set-Modell . Ich weiß, es ist eine Menge Nacharbeit, aber früher oder später werden Sie feststellen, dass es die beste Wahl ist:)

    
___ tag123sorting ___ Das Sortieren ist der Vorgang, bei dem eine Reihenfolge auf eine Objektgruppe angewendet wird. ___ tag123mysql ___ MySQL ist ein freies, relationales Datenbank-Managementsystem (RDBMS), das die strukturierte Abfragesprache (SQL) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle SQL verwenden, um die Daten zu verwalten. ___ answer9197901 ___

Verwenden Sie eine Tabellendefinition in etwa so (selbstreferenzierender Schlüssel):

%Vor%

Sie könnten dann einen rekursiven allgemeinen Tabellenausdruck verwenden (dies ist in MS SQL), um Ihre Ergebnisse zu erhalten:

%Vor%

CTE-Referenz:

Ссылка

    
___ tag123sql ___ Structured Query Language (SQL) ist eine Sprache für die Abfrage von Datenbanken. Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) enthalten. Wenn sich Ihre Frage nur auf ein bestimmtes DBMS bezieht (verwendet bestimmte Erweiterungen / Funktionen), verwenden Sie stattdessen das Tag des DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten den ISO / IEC-Standard SQL verwenden. ___ qstntxt ___

Ich dränge meinen Kopf gegen etwas und ich frage mich, ob jemand erfahrener wäre, der mir helfen könnte.

Mein Ziel ist es, einen Kommentarthread zu erstellen, der ein System der Kommentierung berücksichtigt.

Zuerst werde ich erklären, wo ich gerade bin.

Angenommen, wir haben einen Kommentar-Thread zu einem Artikel, der wie im folgenden Beispiel aussieht. Die Zahl in Klammern ist die ID dieses Kommentars. IDs werden automatisch von der Datenbank zugewiesen und chronologisch mit jedem weiteren geposteten Kommentar erhöht. Die Anzahl der Striche vor dem Kommentartext spiegelt die Kommentartiefe wider.

%Vor%

Mein erstes Problem bestand darin, diese Daten so zu speichern, dass sie in der richtigen Reihenfolge zurückgegeben werden können. Wenn Sie einfach ein Tiefenfeld und eine Reihenfolge nach Tiefe speichern, werden zuerst alle Kommentare der obersten Ebene und dann die Kommentare der zweiten Ebene usw. zurückgegeben. Das ist nicht richtig, wir müssen die Kommentare mit der vollständigen, noch intakten Herkunft zurückgeben.

Eine Möglichkeit, dies zu erreichen, besteht darin, die vollständige Abstammung für jeden Kommentar zu speichern.

%Vor%

Das Hinzufügen eines weiteren Kommentarsatzes ist so einfach wie das Abrufen der Abstammung aus dem Kommentar, auf den Sie antworten, und das Anhängen seiner ID an die neue Elternschaft. Zum Beispiel, wenn ich auf Kommentar 10 antworten würde, würde ich seine Abstammung nehmen (03-05-08-) und seine ID anhängen (10-). Die Datenbank würde dies automatisch als 11. Kommentar erkennen, und wir erhielten:

%Vor%

Wenn wir nun die Kommentare zur Anzeige anordnen, ordnen wir eine Verkettung der Eltern- und Kommentar-ID an, die uns folgendes gibt:

%Vor%

Welches genau die gleiche Liste wie zuerst gezeigt produziert. Mit Kommentar 11, den wir später hinzugefügt haben, an der richtigen Stelle eingefügt:

%Vor%

Das Einrücken kann durch Überprüfen der Länge der CONCAT-Zeichenfolge und Multiplizieren der len (CONCAT (Abstammung, ID)) mit einer festgelegten Anzahl von Pixeln erfolgen. Das ist großartig, wir haben ein System zum Speichern von Kommentaren auf eine Weise, die ihre Abstammung erkennt.

Jetzt das Problem:

Nicht alle Kommentare sind gleich. Ein System der Kommentarbewertung ist erforderlich, um gute Kommentare zu unterscheiden. Nehmen wir an, jeder Kommentar hat eine Schaltfläche zum Hochladen. Während wir die Eltern behalten möchten, wenn ein Kommentar zwei direkte Antworten auf derselben Ebene hat, möchten wir zuerst die mit den meisten Upvotes anzeigen. Ich füge unten [eckige Klammern] einige Stimmen hinzu.

%Vor%

In diesem Beispiel sind die Kommentare (01) und (03) beide auf der obersten Ebene, aber (03) hat [50 Stimmen] und (01) hat nur [6 Stimmen]. (01) erscheint oben nur aufgrund der Tatsache, dass es früher gebucht wurde und daher eine kleinere ID zugewiesen wurde. Ebenso sind (02) und (06) beide Antworten auf (01), müssen aber neu geordnet werden, damit derjenige mit den meisten Stimmen (06) an die Spitze gelangen kann.

Ich bin ganz und gar in dem Versuch stecken, das zu erreichen.

Ich stelle mir vor, dass jede Bestellung / Neuordnung und Indexierung besser auf einer Kommentar-Abstimmung statt auf Seitenladung durchgeführt werden würde, so dass die Seitenladezeit so schnell wie möglich sein kann, aber darüber hinaus habe ich absolut keine Ahnung!

Irgendwelche Ideen oder Licht, das Sie auf mögliche Wege werfen könnten, würden wirklich eine Last wegnehmen! Danke für deine Hilfe wie immer.

----------------------------------------------- ---------------------------------

Bearbeiten: Als Antwort auf @ Paddys Lösung,

Wenn ich den von @Paddy angebotenen Ausdruck auf den Scheindaten ausführe, ist der erste Fehler, den ich bekomme:

%Vor%

Dies kann behoben werden, indem der rekursiven Elementdefinition SELECT 'top 100 Prozent' hinzugefügt wird. Sobald dies erledigt ist, bekomme ich den Fehler:

%Vor%

Dies kann gelöst werden, indem der CommentTree-Spezifikation eine Spalte "Level" hinzugefügt wird. Dies gibt dann die Daten aus, aber es gibt zuerst alle Kommentare der obersten Ebene zurück und dann etwas, das der richtigen Sortierreihenfolge ähnelt (aber nicht wirklich übereinstimmt).

Die Daten werden als solche zurückgegeben:

%Vor%

Habe ich etwas falsch gemacht oder hat @Paddy etwas übersehen? Bitte akzeptieren Sie meine Entschuldigung, rekursive Funktionen sind sehr neu für mich.

    
___ tag123commentting ___ hilf uns dieses Wiki zu bearbeiten ___ tag123hierarchicaldata ___ Hierarchische Daten spiegeln eine Reihe von Eltern-Kind-Beziehungen wider. Diese können in einer Genealogie, einer Taxonomie, einer Liste von Anforderungen für die Teilezusammenstellung und unzähligen anderen Instanzen gefunden werden. Methoden für den Umgang mit hierarchischen Daten sind oft unerlässlich für die Datenverwaltung und -analyse. ___
3
Antworten

Visual Studio / ** / Kommentarverknüpfung?

Ich möchte wissen, wie man die Kommentare /**/ über die Verknüpfung setzt. Ich kenne die Tastenkombination Strg + K + C für die Kommentare // , aber sie kommentiert die gesamte Zeile. Manchmal möchte ich beim Debuggen etwas wie " ref str...
06.09.2015, 17:24
4
Antworten

Was sind die gültigen und lesbaren Ansätze zum Kommentieren in PHP5?

In den letzten zwei Monaten, in denen ich PHP gelernt habe, habe ich mehr als zwei Stile identifiziert, die Leute verwenden, um Code zu kommentieren! Ich habe nicht viel Konsistenz gesehen ... was meiner Meinung nach normalerweise Künstler bei d...
11.04.2011, 08:20
3
Antworten

Kommentar-Threading mit Score Factoring

Ich dränge meinen Kopf gegen etwas und ich frage mich, ob jemand erfahrener wäre, der mir helfen könnte. Mein Ziel ist es, einen Kommentarthread zu erstellen, der ein System der Kommentierung berücksichtigt. Zuerst werde ich erklären, wo i...
08.02.2012, 16:50