2015-04-02 146 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