我试图构造一个查询,它将包含一个指示用户是否下载了文档的列。我有一个名为HasDownloaded的表,其中包含以下列:id,documentID,memberID。查明用户是否已下载特定的文档很容易;但我需要生成一个查询,其结果如下所示:LEFT JOIN上的WHERE帮助SQL查询
name id
----------------------
abc NULL
bbb 2
ccc 53
ddd NULL
eee 13
ID并不重要;我感兴趣的是文档是否已被下载(是否为NULL)。
这里是我的查询:
SELECT Documents.name, HasDownloaded.id FROM Documents
LEFT JOIN HasDownloaded ON HasDownloaded.documentID = Documents.id
WHERE HasDownloaded.memberID = @memberID
的问题是,如果一个项存在于HasDownloaded表指定的用户,这只会返回值。我想保持这个简单,只有在已下载已有的文档的HasDownloaded中有条目。因此,如果用户1下载了abc,bbb和ccc,我仍然希望ddd和eee显示在结果表中,只需将id设置为NULL即可。但是WHERE子句只给出了哪些条目存在的值。
我不是一个SQL专家 - 是否有一个运营商会给我我想要的东西?我应该采取不同的方法吗?或者这是不可能的?
非常好!这就是我一直在寻找的。 – ine 2008-10-20 16:30:31