在下面的SQL查询中,我有2个表,文档和文档用户映射。在文档表中,它包含documentId,documentname和userid列;在doumnent usermap表中,它有documentid和userid。我们创建的文档将在documenttable(创建文档,userid)中。我们与其他用户共享的文档将位于documentusermap表(documentid .other userid)中。我必须将我的用户标识传递给sp
我的目标是获取其他用户为我分享的文档。
@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
答案 0 :(得分:1)
很难理解你的问题,但如果我理解了这就是你想要的 - 一份与你共享的文件清单,但不包括你拥有的文件。在这种情况下,没有理由这是LEFT联接。
-- 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
或者你想要你拥有的两个文档,和你共享的文档;最简单的方法如下所示:
-- 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 :(得分:0)
试试这个
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
答案 2 :(得分:0)
我首先要查找DocumentUserMapping
中与我共享的文档,然后获取文档信息
SELECT Doc.UserID,
Doc.DocumentID,
Doc.DocumentName
FROM DocumentUserMapping DUM
INNER JOIN Documents Doc ON DUM.DocumentID = Doc.DocumentID
WHERE DUM.UserID = %myID%
答案 3 :(得分:0)
尝试此查询
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