J'ai une table de référence croisée qui ressemble à ceci:lignes SQL sélection où une valeur de colonne est commune à une autre colonne de critères
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
Il correspond à des documents à des sujets. Les documents peuvent être membres de plus d'un sujet. Je veux retourner les lignes de cette table où un document donné correspond tous les les sujets dans un ensemble donné. Par exemple, compte tenu de l'ensemble des sujets:
(17,76)
Je veux retourner les lignes que pour les documents qui correspondent à tous les sujets de cet ensemble (au moins) quelque part dans la table de référence croisée. L'ensemble de sortie souhaité étant donné l'ensemble ci-dessus serait:
id document_id subject_id
2 5 17
3 5 76
5 9 17
6 9 76
Notez que la dernière ligne de la table n'est pas retourné parce que le document correspond uniquement à l'un des sujets requis.
Quel est le moyen le plus simple et le plus efficace d'interroger pour cela dans SQL?
Ce serait bien de savoir comment vous fournissez les paramètres à la requête. Je vois une réponse, bien que parfaitement bien, cela ne fonctionnera que pour exactement 2 valeurs dans le jeu de paramètres. Si vous pouvez limiter le nombre de paramètres à, disons, 10 max, alors c'est une conversation. Si vous avez besoin d'une application flexible, les suggestions seront différentes. – Eugene
Merci, l'entrée est fondamentalement "choisir un nombre quelconque de sujets" de sorte que l'ensemble des identifiants de sujet peut croître aussi grand que le nombre de sujets (en théorie). – Maciek