ユーザーがドキュメントをダウンロードしたかどうかを示す列を含むクエリを作成しようとしています。次の列を持つ HasDownloaded というテーブルがあります: id、documentID、memberID。ユーザーが特定のドキュメントをダウンロードしたかどうかを調べるのは簡単です。しかし、結果が次のようになるクエリを生成する必要があります。
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 の専門家ではありません。ここで必要なものを提供してくれる演算子はありますか? 別のアプローチをとるべきですか?それともこれは不可能ですか?