我正在編碼一個網站,並且希望製作一個時間線來顯示用戶的活動:他寫的評論(關於網站中的文章),他發佈的消息(關於論壇)和他上演的[上/下]投票。將具有不同列的表合併到單個查詢中
現在我有三個表(非相關領域跳過):
COMMENTS
id | author_id | article_id | timestamp
MESSAGES
id | author_id | thread_id | timestamp
VOTES
id | author_id | comment_id | message_id | type | timestamp
我想執行,給予author_id
將返回一個結果article_id
場自評相結合的查詢時,來自MESSAGES的thread_id
,來自VOTES的comment_id
,message_id
和type
字段以及共同的timestamp
字段,全部按時間戳排序。結果應該是這樣的:
article_id | thread_id | comment_id | message_id | type | timestamp
我使用PostgreSQL,到目前爲止,我一直無法產生這種結果。
有人可以指出我正確的方向嗎?
編輯
爲了澄清我想達到的目標,如果我在數據庫中的以下數據:
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
那麼結果應該是這樣的:
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
提前致謝。
你想選擇三種時間戳中的哪一種,或者你想要所有這三種時間戳? –
@TimBiegeleisen:我需要它們來生成用戶的時間表。我更新了原文,以說明我想實現的目標。 –