I have a cross reference table that looks like this:
id document_id subject_id
1 8 21
2 5 17
3 5 76
4 7 88
5 9 17
6 9 76
7 2 76
It matches documents to subjects. Documents can be members of more than one subject. I want to return rows from this table where a given document matches all the subjects in a given set. For example, given the set of subjects:
(17,76)
I want to return only rows for documents which match all the subjects in that set (at least) somewhere in the cross reference table. The desired output set given the above set would be:
id document_id subject_id
2 5 17
3 5 76
5 9 17
6 9 76
Notice that the last row of the table is not returned because that document only matches one of the required subjects.
What is the simplest and most efficient way to query for this in SQL?