首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sql查询左转外部联接

Sql查询左转外部联接
EN

Stack Overflow用户
提问于 2014-06-18 07:51:53
回答 4查看 77关注 0票数 0

在下面的SQL查询中,我有两个表、文档和文档用户地图。在documentname中,它有列documentId、documentname和userid;在documents表中,它有documentid和userid。我们创建的文档将位于documenttable (created,userid)中。我们共享给其他用户的文档将在documentusermap表(documentid .other userid).here中,我必须将我的userid传递给sp

我的目标是要获得其他用户为我共享的文档。

代码语言:javascript
复制
@i_userid int,
SELECT      Doc.UserID,
            Doc.DocumentID,
            Doc.DocumentName 

FROM        Documents Doc 

LEFT OUTER JOIN DocumentUserMapping DUM 
    ON      DUM.DocumentID = Doc.DocumentID 
    AND     DUM.UserID != Doc.UserID
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-18 08:05:59

尝试这个查询

代码语言:javascript
复制
SELECT      Doc.UserID,
            Doc.DocumentID,
            Doc.DocumentName 

FROM        Documents Doc 

JOIN DocumentUserMapping DUM 
    ON      DUM.DocumentID = Doc.DocumentID 
WHERE Doc.UserID != @i_userid
AND DUM.UserID = @i_userid
票数 0
EN

Stack Overflow用户

发布于 2014-06-18 10:10:04

很难理解你的问题,但如果我真的理解了,这就是你想要的--一张你共享的文档列表,但不包括你拥有的文档。在这种情况下,这是没有理由的。

代码语言:javascript
复制
-- Return documents shared to me that I do not own
SELECT      Doc.UserID,
            Doc.DocumentID,
            Doc.DocumentName 
FROM        Documents Doc 
JOIN        DocumentUserMapping DUM 
    ON      DUM.DocumentID = Doc.DocumentID 
    AND     DUM.UserID = @i_userid  -- Shared to me
WHERE       Doc.UserID != @i_userid -- Not owned by me

或者,您希望拥有的文档和文档共享;最简单的方式如下所示:

代码语言:javascript
复制
-- Return documents shared to me AS WELL AS docs I own
SELECT      Doc.UserID,
            Doc.DocumentID,
            Doc.DocumentName 
FROM        Documents Doc 
WHERE       Doc.UserID = @i_userid  -- Docs I own
-- Or.. Docs shared
    OR      EXISTS (SELECT 1 FROM DocumentUserMapping WHERE DocumentID = Doc.DocumentID AND UserID = @i_userid)
票数 1
EN

Stack Overflow用户

发布于 2014-06-18 08:03:23

尝尝这个

代码语言:javascript
复制
SELECT      Doc.UserID,
            Doc.DocumentID,
            Doc.DocumentName 

FROM        Documents Doc 

LEFT JOIN DocumentUserMapping DUM 
    ON      Doc.DocumentID = DUM.DocumentID 
    where   Doc.UserID=101;

这里我以101作为您的用户id

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24279903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档