|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
Никак не могу разобраться. Есть БД книг, в одной таблице записаны книги, во другой - рубрики (художественная, детская, научная и т.п.). Каждая книга может относиться к нескольким рубрикам. Надо, чтобы на форму можно было вывести все книги, относящиеся к определённым рубрикам. Как вывести все книги, принадлежащие к одной рубрике - это понятно: Код: vbnet 1.
Но каким должен быть запрос, чтобы вывести книги, принадлежащие одновременно к нескольким рубрикам? Например, детские и художественные ? Вариант с Книги INNER JOIN КнВид здесь, по-видимому, уже не подойдёт, поскольку, если, например, "Книга 1" принадлежит сразу к 2 рубрикам, то он даст для неё 2 строки: Название Вид_ключКнига11Книга12 Т.е. в этой таблице не существует кортежа, который имел бы 2 значения "Вид_ключ", поэтому мы не сможем найти его через какое-либо условие WHERE. Способов решить это с помощью GROUP BY мне не удалось найти. Единственное, что я смог придумать - это использовать множество запросов, например, Запрос 1 - выводит ключи художественных книг: Код: plaintext
Код: plaintext
Код: plaintext
Но! Чтобы по такому принципу определялся источник записей формы, надо или реализовать этот запрос через одну строку, или динамически формировать подзапросы во время работы формы. Первый вариант, конечно же, исключается, поскольку он невероятно сложен (с учётом того, что число рубрик не ограничено). Реализовать второй - более реально, для этого надо динамически создавать/изменять запросы базы данных, которые служат источниками данных формы. Вопрос в том, существуют ли какие-то другие, более простые/правильные способы решения этой задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 21:51 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
bratint, создаете список кодов, которым удовлетворяет та или иная книга Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 22:58 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
bratint, Какая версия Access? 2003 или старше? По картинке вроде на 2003 смахивает. Дело в том, что в 2007 появилась фишка с добавлением в одно поле нескольких значений. Подобная ситуация, с выводом нужных значений, решается на раз-два без каких либо заморочек. На всякий случай прикрепляю пример в формате accdb ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2019, 23:03 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
Шаман, Не надо учить плохому ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 00:09 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
ШаманДело в том, что в 2007 появилась фишка с добавлением в одно поле нескольких значений. Даже микрософт призывает никогда ей не пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 08:13 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
Общий подход: Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 09:09 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
alecko, так не получится - этот запрос выдаст художественные или детские , а надо получить художественные и детские ! Шаман, Access 2002. Формат accdb не поддерживается :-( Akina, спасибо, работает!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 14:48 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
bratint, да, точно - условие "и" можно реализовать через Not IN и ставить все другие категории кроме детских и художественных. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 15:42 |
|
Запрос для выборки записей через форму при связи многие ко многим
|
|||
---|---|---|---|
#18+
alecko, но тогда не выведутся книги, которые кроме 1 и 2 рубрик относятся ещё к каким-нибудь, а они должны быть. Здесь код Акины - самое то. Может кому пригодится код для формы: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Каталог - это Книги inner join КнВид. Не забудьте также включить несвязное выделение в параметрах списка. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2019, 17:24 |
|
|
start [/forum/topic.php?fid=45&fpage=26&tid=1610455]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
77ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 239ms |
0 / 0 |