que tienen una tabla de referencia cruzada que tiene este aspecto:filas SQL seleccionar donde el valor de una columna es común a través de otra columna criterios
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
Coincide con los documentos a los sujetos. Los documentos pueden ser miembros de más de un tema. Quiero devolver las filas de esta tabla donde un documento dado coincide con todos los temas en un conjunto dado. Por ejemplo, dado el conjunto de temas:
(17,76)
quiero devolver sólo las filas de los documentos que se ajustan a todos los temas en los que el conjunto (al menos) en algún lugar de la tabla de referencias cruzadas. El conjunto de salida deseada dado el conjunto anterior sería:
id document_id subject_id
2 5 17
3 5 76
5 9 17
6 9 76
en cuenta que la última fila de la tabla no se devuelve porque ese documento sólo coincide con una de las materias requeridas.
¿Cuál es la forma más simple y eficiente de consultar esto en SQL?
Sería genial saber cómo está proporcionando los parámetros a la consulta. Veo una respuesta, aunque perfectamente, solo funcionará para exactamente 2 valores en el conjunto de parámetros. Si puede limitar el número de parámetros, por ejemplo, 10 max, entonces se trata de una conversación. Si necesita que la aplicación sea flexible, las sugerencias serán diferentes. – Eugene
Gracias, la entrada es básicamente "elegir cualquier número de temas" para que el conjunto de identificaciones de sujeto pueda crecer tan grande como el número de sujetos (en teoría). – Maciek