|
Группировка в запросе поля типа "многие-ко-многим"
|
|||
---|---|---|---|
#18+
Делаю базу данных для реестра документации на работе. История следующая: Есть основная таблица (в которую заносятся записи о каждом документе) и несколько таблиц-справочников (подключаются к основной таблице связями). Один из справочников - список объектов (здания там всякие и земельные участки). Так как каждому документу может соответствовать несколько объектов (например, документ - письмо, в котором идет речь сразу о нескольких объектах), а каждому объекту, соответственно, несколько документов (по одному и тому же объекту могут быть разные документы), то их взаимосвязь реализована через промежуточную табличку (многие ко многим). Сделал я запрос и на его основе сделал форму (приложенная к сообщению картинка) с фильтрами. Логика такая - без фильтров запрос выводит просто все документы, которые сейчас есть в базе, а если в фильтре выбрать, напрмер, какой-либо объект, то запрос выводит все документы по этому объекту. Вроде, все понятно, но есть кое-какая мелочь, которая мне не дает покоя. Если в базу добавлять документ, к которому привязано несколько объектов, то этот запрос выдаст не одну строчку с этим документом, а столько, сколько объектов было привязано к этому документу, что логично. Но, конечного пользователя это будет вводить в заблуждение, когда один и тотже документ несколько раз подряд в табличке записан. Для устранения этой логичной неизбежности я решил попробовать сгруппировать повторяющиеся строки в запросе в одну. Группировал с параметром "First", так как более логичных вариантов в списке нет. И теперь возникает следующая незадача. В выпадающий список фильтра по объектам в этом поле подгружаются только те объекты, документы по которым в данный момент отображает запрос. Но, ввиду вышеупомянутой группировки, все группируемые значения, кроме первого (помните параметр "First"?) "съедаются" и в список для фильтрации не попадают. Вот и задача - как так сгруппировать в запросе записи по полю, которое связано отношением типа многие ко многим, чтобы "съеденные" в результате группировки значения этого поля визуально видны не были, но к ним можно было обратиться фильтром? Надеюсь, не чересчур запутанно я рассказал. Кто дочитал текст до конца и осознал смысл, прошу Вас порекомендовать как решить данную проблему. Возможно, я неправильный подход выбрал изначально и подобное можно реализовать как-то по-другому? Или нужны макросы или VBA для решения вопроса? Любые идеи и предложения в студию) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2016, 21:07 |
|
Группировка в запросе поля типа "многие-ко-многим"
|
|||
---|---|---|---|
#18+
Чет картинка не прикрепилась, пробую еще раз: ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2016, 21:08 |
|
Группировка в запросе поля типа "многие-ко-многим"
|
|||
---|---|---|---|
#18+
alg0r1tm, - фильтр работает не правильно или не в том месте. - группировать не нужно (сортировать по объектам или ещё по чём - да). - Если условие отбора стоит под ID объекта в таблице объект - то и будут выбраны все строки из промежуточной таблицы. - Если условие отбора стоит под ID объекта в связующей таблице - то будут выбраны строки только этого объекта из промежуточной таблицы. А вообще-то нужно посмотреть еще на ваш кусок схемы: Объект ---> Промежуточная таблица <--- Документ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 13:20 |
|
Группировка в запросе поля типа "многие-ко-многим"
|
|||
---|---|---|---|
#18+
vmag, вот схема: ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 14:56 |
|
Группировка в запросе поля типа "многие-ко-многим"
|
|||
---|---|---|---|
#18+
alg0r1tm, Делайте запрос на три таблицы, а условие отбора по объекту ставьте на ОБЪЕКТЫДОКУМЕНТА.КодОбъекта ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 18:48 |
|
Группировка в запросе поля типа "многие-ко-многим"
|
|||
---|---|---|---|
#18+
vmag, хотя и так должно всё работать (по самому объекту), разницы нет ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 18:50 |
|
|
start [/forum/topic.php?fid=45&gotonew=1&tid=1613172]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 464ms |
0 / 0 |