Mam tabelę krzyżową odniesienia, który wygląda tak:SQL wybierając wiersze gdzie wartość jednej kolumny jest wspólne całej innej kolumnie kryteria
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
pasuje dokumentów poddanych. Dokumenty mogą być członkami więcej niż jednego przedmiotu. Chcę zwrócić wiersze z tej tabeli, w których dany dokument pasuje do obiektów w danym zestawie. Na przykład, biorąc pod uwagę zestaw przedmiotów:
(17,76)
Chcę wrócić tylko wiersze dla dokumentów, które pasują do wszystkich przedmiotów w tym zestawie (co najmniej) gdzieś w przekroju tabeli odniesienia. Żądany zestaw wyjściowy podany wyżej zestaw będzie:
id document_id subject_id
2 5 17
3 5 76
5 9 17
6 9 76
Zauważ, że ostatni wiersz tabeli nie jest zwracana tylko dlatego, że dokument pasuje do jednego z wymaganych przedmiotów.
Jaki jest najprostszy i najskuteczniejszy sposób na zapytanie o to w SQL?
Byłoby świetnie wiedzieć, w jaki sposób podajesz parametry kwerendy. Widzę jedną odpowiedź, natomiast idealnie w porządku, działa ona tylko dla dokładnie 2 wartości w zestawie parametrów. Jeśli możesz ograniczyć liczbę parametrów, powiedzmy 10 maks., To jedna rozmowa. Jeśli chcesz, aby aplikacja była elastyczna, sugestie będą inne. – Eugene
Dzięki, dane wejściowe są w zasadzie "wybierz dowolną liczbę tematów", aby zbiór tematów identyfikacyjnych mógł rosnąć tak dużą, jak liczba przedmiotów (teoretycznie). – Maciek