2015-04-02 63 views
0

使用PostgreSQL,我希望只能看到具有最新修改時間戳的文檔ID。我很難得到這個工作,並想知道如果有人有任何指針?如何查詢最大日期? (PostgreSQL)

這裏是我當前的代碼:

SELECT cmsdw_document.document_id as "Document ID", 
    cmsdw_activity_meta.activity_name as "Activity Name", 
    cmsdw_document.title as "Title", 
    cmsdw_document.creation_ts as "Creation Timestamp", 
    cmsdw_document.modification_ts as "Modification Timestamp", 
    cmsdw_user.firstname as "First Name", 
    cmsdw_user.lastname as "Last Name", 
    cmsdw_container.name as "Name", 
    cmsdw_document_stats_fact.content_id as "Content ID", 
    cmsdw_document_stats_fact.views as "Views", 
    cmsdw_document_stats_fact.likes as "Likes", 
    cmsdw_document_stats_fact.bookmarks as "Bookmarks", 
    cmsdw_document_stats_fact.comments as "Comments", 
    cmsdw_document_stats_fact.shares as "Shares", 
    cmsdw_document_stats_fact.unique_viewers as "Unique Viewers" 
FROM 
    public.cmsdw_document, 
    public.cmsdw_document_stats_fact, 
    public.cmsdw_container, 
    public.cmsdw_object, 
    public.cmsdw_user, 
    public.cmsdw_activity_fact, 
    public.cmsdw_activity_meta 
WHERE 
    cmsdw_activity_fact.activity_type = cmsdw_activity_meta.activity_type AND 
    cmsdw_document_stats_fact.content_id = cmsdw_object.object_id AND 
    cmsdw_document.document_id = cmsdw_object.object_id AND 
    cmsdw_container.container_id = cmsdw_document.container_id AND 
    cmsdw_object.dw_object_id = cmsdw_activity_fact.direct_dw_object_id AND 
    cmsdw_object.object_type = cmsdw_activity_fact.direct_object_type AND 
    cmsdw_activity_fact.user_id = cmsdw_user.user_id AND 
    cmsdw_container.name = 'Getting Started' AND 
    cmsdw_object.object_type = 102 AND 
    cmsdw_activity_fact.activity_type = 20; 

回答

2

您應該解決您的查詢有正確的語法join - 簡單的規則:永遠不要在from子句中使用逗號。

爲您查詢,您可以用替換select

select distinct on (cmsdw_document.document_id) . . . 

的 「」是你的查詢的其餘部分。然後添加:

order by cmsdw_document.document_id, cmsdw_document.modification_ts desc 

這應該給你最新的文檔,使用Postgres擴展。

+0

正確的JOIN語法使得查詢非常容易閱讀和調試! – 2015-04-02 19:29:34

+0

謝謝@ gordon-linoff - 我遇到的唯一問題是,當我進行這些更改時,我收到以下錯誤。你知道這可能是什麼原因嗎?指針指向逗號。 錯誤:語法錯誤處於或接近「,」 LINE 1:SELECT distinct(on jivedw_document.document_id), ^ **********錯誤********** 錯誤:語法錯誤處於或接近「,」 SQL狀態:42601 字符:49 – Curtis 2015-04-03 15:04:31

+0

@ gordon-linoff - 我可能剛剛回答了我的後續問題。我假設我的查詢的第一行需要像這樣格式化?將(cmsdw_document.document_id)cmsdw_document.document_id上的distinct選項設置爲「Document ID」, – Curtis 2015-04-03 15:39:45