2014-06-18 291 views
0

在下面的SQL查詢中,我有2個表,文檔和文檔用戶映射。在文檔表中它有列documentId,documentname和userid;在doumnent usermap表中它有documentid和userid。我們創建的文檔將在文檔表(創建的documentid,userid)中。我們分享給其他用戶的文檔將在documentusermap table(documentid .other userid)中。我必須將我的用戶標識傳遞給spSQL查詢左外連接

我的目標是我想獲取其他用戶爲我分享的文檔。

@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

你的問題是什麼? –

回答

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 
0

試試這個

​​

這裏我已經採取了101的用戶ID

+0

嘿,我的目標是我有我的用戶ID 1,我創建了一個新的文檔,它的文檔ID是2.現在另一個用戶他的用戶ID是2他創建一個文檔,它的ID是3.現在他想與我分享他的文檔。所以它應該顯示documentid 3.that我的目標 – user3729162

+0

和你在哪裏維護文檔被共享的ID列表......? –

+0

是的,我已經在文檔表 – user3729162

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% 
+0

嘿保持列表的ID我的目標是我有我的用戶ID 1,我創建了一個新的文檔,其文檔ID是2。現在另一個用戶他的用戶ID是2他創建一個文檔,它的ID是3。現在他想和我分享他的文件。所以它應該顯示文件3.我的目標 – user3729162

1

很難理解你的問題,但如果我確實瞭解它,這是你想要的 - 分享給你的文件列表,但不包括你擁有的文件。在這種情況下,這不會是左派加入的原因。

-- 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)