Никак не могу разобраться. Есть БД книг, в одной таблице записаны книги, во другой - рубрики (художественная, детская, научная и т.п.). Каждая книга может относиться к нескольким рубрикам.
Надо, чтобы на форму можно было вывести все книги, относящиеся к определённым рубрикам.
Как вывести все книги, принадлежащие к одной рубрике - это понятно:
Me.RecordSource = "SELECT * FROM Книги INNER JOIN КнВид ON Книги.Кн_ключ=КнВид.Кн_ключ WHERE Вид_ключ = " & Me.Список2
Но каким должен быть запрос, чтобы вывести книги, принадлежащие одновременно к нескольким рубрикам? Например,
детские и художественные?
Вариант с Книги INNER JOIN КнВид здесь, по-видимому, уже не подойдёт, поскольку, если, например, "Книга 1" принадлежит сразу к 2 рубрикам, то он даст для неё 2 строки:
Название | Вид_ключ | Книга1 | 1 | Книга1 | 2 |
|
Т.е. в этой таблице не существует кортежа, который имел бы 2 значения "Вид_ключ", поэтому мы не сможем найти его через какое-либо условие WHERE. Способов решить это с помощью GROUP BY мне не удалось найти.
Единственное, что я смог придумать - это использовать множество запросов, например,
Запрос 1 - выводит ключи художественных книг:
SELECT КнВид.Кн_ключ FROM КнВид WHERE КнВид.Вид_ключ=1
Запрос 2 - выводит ключи детских книг:
SELECT КнВид.Кн_ключ FROM КнВид WHERE КнВид.Вид_ключ=2
Запрос 3 - выводит ключи детских и художественных книг:
SELECT Запрос1.Кн_ключ FROM Запрос1 INNER JOIN Запрос2 ON Запрос1.Кн_ключ=Запрос2.Кн_ключ
Но! Чтобы по такому принципу определялся источник записей формы, надо или реализовать этот запрос через одну строку, или динамически формировать подзапросы во время работы формы.
Первый вариант, конечно же, исключается, поскольку он невероятно сложен (с учётом того, что число рубрик не ограничено).
Реализовать второй - более реально, для этого надо динамически создавать/изменять запросы базы данных, которые служат источниками данных формы.
Вопрос в том, существуют ли какие-то другие, более простые/правильные способы решения этой задачи?
https://www.sql.ru/forum/1317365/zapros-dlya-vyborki-zapisey-cherez-formu-pri-svyazi-mnogie-ko-mnogim