Ich kodiere eine Website und möchte eine Zeitleiste erstellen, die die Aktivität eines Benutzers zeigt: Kommentare, die er geschrieben hat (über Artikel in der Site), Nachrichten, die er gepostet hat (auf der Foren) und [up | down] Stimmen, die er abgegeben hat.Tabellen mit verschiedenen Spalten zu einer einzigen Abfrage zusammenfügen
Im Moment habe ich drei Tabellen (nicht-relevanten Felder übersprungen):
COMMENTS
id | author_id | article_id | timestamp
MESSAGES
id | author_id | thread_id | timestamp
VOTES
id | author_id | comment_id | message_id | type | timestamp
Ich möchte eine Abfrage auszuführen, die bei einem gegebenen author_id
wird ein Ergebnis Kombinieren des article_id
Feld von KOMMENTAR zurückzukehren, die thread_id
von MESSAGES, die comment_id
, message_id
und type
Felder von VOTES und der gemeinsamen timestamp
Feld, alle nach dem Zeitstempel sortiert. Das Ergebnis sollte wie folgt sein:
article_id | thread_id | comment_id | message_id | type | timestamp
Ich bin mit PostgreSQL, und bisher habe ich es nicht gelungen, diese Art von Ergebnis zu erzeugen.
Kann mir jemand in die richtige Richtung zeigen?
EDIT
Um zu klären, was ich erreichen will, wenn ich die folgenden Daten in der Datenbank hatte:
COMMENTS
id | author_id | article_id | timestamp
1 | 1 | 1 | 11:00:10
2 | 1 | 2 | 11:00:20
MESSAGES
id | author_id | thread_id | timestamp
3 | 1 | 20 | 12:00:10
4 | 1 | 21 | 12:00:20
VOTES
id | author_id | comment_id | message_id | type | timestamp
5 | 1 | 1 | | 1 | 13:00:10
6 | 1 | | 3 | 2 | 13:00:20
Dann sollte das Ergebnis sein:
article_id | thread_id | comment_id | message_id | type | timestamp
1 | | | | | 11:00:10
2 | | | | | 11:00:20
| 20 | | | | 12:00:10
| 21 | | | | 12:00:20
| | 1 | | 1 | 13:00:10
| | | 3 | 2 | 13:00:20
Danke im Voraus.
Welchen der drei Zeitstempel möchten Sie auswählen oder möchten Sie alle? –
@TimBiegeleisen: Ich brauche sie alle, um die Zeitleiste des Benutzers zu erstellen. Ich habe den ursprünglichen Beitrag aktualisiert, um zu illustrieren, was ich erreichen möchte. –