在下面的查询中,我有表格:Documents
,Users
和DocumentUserMapping
。
Documents
表格包含userid
documentid
和documentname
列
Users
表格有userid
username
DocumentUserMapping
表格包含documentid
和userid
。
我将通过userid
,我需要从文档表中获取documentname
的所有userid
,当我在userid
和Documentid
中输入Documentusermapping
时来自文档表的{1}}来自文档的docid
,document 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
答案 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