select stmt上的SQL查询问题

时间:2014-06-13 14:01:12

标签: sql sql-server

在下面的查询中,我有表格:DocumentsUsersDocumentUserMapping
Documents表格包含userid documentiddocumentnameUsers表格有userid username DocumentUserMapping表格包含documentiduserid

我将通过userid,我需要从文档表中获取documentname的所有userid,当我在useridDocumentid中输入Documentusermapping时来自文档表的{1}}来自文档的dociddocument name不应显示。

    SELECT DISTINCT Doc.DocumentID, Doc.DocumentName FROM Documents Doc  

 WHERE   Doc.DocumentID NOT IN (SELECT DocumentID FROM DocumentUserMapping DUM WHERE UserID = @i_UserID)  AND Doc.DocumentID NOT IN (@i_UserID)     

 SELECT DUM.UserID, P1.UserLoginID , DUM.DocumentID, P2.DocumentName, DUM.ViewDoc, DUM.EditDoc FROM DocumentUserMapping DUM    
 LEFT OUTER JOIN Users P1 ON P1.UserID = DUM.UserID    
 LEFT OUTER JOIN Documents P2 ON P2.DocumentID = DUM.DocumentID     
    WHERE DUM.UserID = @i_UserID

passing userid=2

USERiD Username
1       AAA

Documents table
Docid,Doc name userid
1         xxx      2
2         yyy      2

Document usermap

USERiD Docid
1         3    

1 个答案:

答案 0 :(得分:0)

我认为这会解决问题:

SELECT *
FROM Documents D INNER JOIN
Users U ON D.UserID = U.UserID LEFT OUTER JOIN
DocumentUserMapping DUM ON D.DocumentID = DUM.DocumentID AND D.UserID = DUM.UserID
WHERE DUM.DocumentID IS NULL AND D.UserID = @UserID

您可以参考我在SQL Fiddler中所做的工作来找出问题http://sqlfiddle.com/#!3/397d7/6