2016-05-26 5 views
1

ich eine einzelne Tabelle haben: Kommentare Spalten sind: author_id, id, parent_id, Zeitstempelverketteten Tabelle VALUES

Beispiel:

author_id, id, parent_id, timestamp 
1, 1, NULL, 12:00 << this is the original post 
2, 1234, 1, 12:04 << this is a reply made 4 minutes after 
3, 5678, 1, 12:05 << this is another reply 

Alle Antworten teilen OPs 'id' als 'parent_id'

Was ich will ist eine einzige Tabelle oder eine Ansicht, bestellt, so dass alle Gespräche (OPs und Antworten) wie oben angeordnet sind. Was ich gerade habe, ist eine Liste aller Kommentare (OPs und Antworten), die einfach nach Zeit sortiert sind, sodass ich viele überlappende Konversationen habe. Ich muss die Gespräche verbinden, aber nicht als eine Verbindung, weil es eine Wiederholung jedes OP für jede Antwort gibt und verdopple die Spalten, die ich brauche.

Dank

Antwort

1

Unter der Annahme, dass das Gespräch von id und parent_id und dass eine neue ID bedeutet den Beginn einer neuen Unterhaltung verknüpft ist. Sie könnten so etwas schreiben:

select 
    ISNULL(parent_id, id) as ConversationId, 
    * 
from 
    Comments 
order by ConversationId, timestamp