Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 10
1

Сравнить две таблицы с разнородной информацией (много к много)

15.02.2016, 10:51. Показов 1536. Ответов 17
Метки нет (Все метки)

Есть две таблицы, Т1 своего рода "задание", Т2 как бы "результат".
Задача: Выявить поля в "результатах" не соответствующие "заданиям".
(Пример: Если в Т1 просили для "COD1:1" предусмотреть "PAN1:A", а в Т2 у "COD2:1" встречается что-либо кроме "A", то нужно вывести соответствующее поле в выборку)

Т1:
PAN1COD1
A1
А1
В2
В2
С3
С3

Т2:
PAN2COD2ID2
А11
А12
С13
В14
В25
С26
А17
А28
В29
А310
А311
С312
В213
С214

Пытаюсь реализовать в access`е, с БД знаком поверхностно. Помогите разобраться, можно ли в принципе решить подобную задачу? Как построить схему данных(?), с учетом того, что во всех столбцах (кроме ID2) информация может повторяться/отсутствовать или не соответствовать шаблону. в Т1 ~7000 записей, в T2 ~30000.

Пока связал COD1-COD2, и вывел "<>[T2]![COD2]" получаю очень сумбурную информацию. Хотел бы видеть подобный результат: "каждому ID2 соответствует одна строка из Т1".
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2016, 10:51
Ответы с готовыми решениями:

Аппаратные ключи. Их много. Как привязать к дистрибутивам, которых тоже много
Начну с вводных данных: имеется: 1) гора дисков 1С 7.7 торговля+склад (предположительно не...

Что лучше: 1 цикл и много действий или много циклов и 1 действие?
Есть n количество данных. Есть m количество действий. Задание надо выполнить m действий с каждой...

Хочу один системник и много-много мониторов+клавиатур+мышей. Как?
Вопрос: как реализовать возможность одновременной работы на одном системнике нескольким людям...

Много методов или много классов. Что лучше?
Имеется библиотека(ActiveX DLL), в которую, в своё время, было решено складировать функции,...

17
38 / 27 / 3
Регистрация: 24.02.2015
Сообщений: 87
15.02.2016, 11:11 2
Добрый день!
Вам нужно соединить поля cod1 и cod2 один к одному, а результаты pan2 ВСЕ к только тем pan1, которые совпадут и указать условие pan1 будет is null.
Миниатюры
Сравнить две таблицы с разнородной информацией (много к много)  
0
Эксперт MS Access
16368 / 6801 / 1495
Регистрация: 21.06.2012
Сообщений: 12,572
15.02.2016, 11:13 3
Цитата Сообщение от poytu Посмотреть сообщение
каждому ID2 соответствует одна строка из Т1
ID2 - это что и где? Зачем в Т1 повторяющиеся записи? И выкладывайте базу - запросы быстрее делать по базе, да и путаницы с именами потом не будет.
0
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
15.02.2016, 12:17 4
Мне кажется, здесь удачно сыграет запрос "записи без подчиненных" из стандартного мастера запросов. На примере конкретной базы сделал бы.

Добавлено через 2 минуты
В запросе "записи без подчиненных" нужно было бы сделать таблицу T2 - основной, а Т1 - подчиненной (как ни странно)), и при правильной установке связей по обоим полям - в итоге бы получили записи из Т2, для которых нет "подчиненных" в Т1, то есть как раз таки то, что требуется в задании.
Хотя и правда непонятно, почему в Т1 - повторяющиеся значения, для чего они там, если это - таблица "заданий"?
0
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 10
15.02.2016, 12:27  [ТС] 5
ltv_1953, выслал базу на почту. Сюда с телефона выложить не удалось. Если не трудно, прикрепите для всех интересующихся.

ID2 в примере, это ключевое индексированое поле.

В Т1 записи повторяются, потому что помимо приведенных столбцов там еще 10, не играющих роли в данной ситуации, но необходимых.

Grin640, разве я могу связать "1к1" поля в которых "неоднородная" информация? Например, в Т1 могут быть значения отсутствующие в Т2, и наоборот.
0
Эксперт MS Access
16368 / 6801 / 1495
Регистрация: 21.06.2012
Сообщений: 12,572
15.02.2016, 12:31 6
Цитата Сообщение от poytu Посмотреть сообщение
Если не трудно, прикрепите для всех интересующихся.
Угу. Выкладываю.
Вложения
Тип файла: zip db.zip (1,002.8 Кб, 6 просмотров)
0
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
15.02.2016, 12:38 7
Ну тогда поставьте задачу уже исходя из имен, имеющихся в вашей базе... А то так наугад затруднительно понять, какая из таблиц - задание, какая - результат... Там еще и какая-то прикрепленная экселевская...
0
Эксперт MS Access
16368 / 6801 / 1495
Регистрация: 21.06.2012
Сообщений: 12,572
15.02.2016, 12:44 8
Выбрать код1 из _COR_2, для которых есть совпадение [_COR_2].[Код]=[_WORD_].[MARK_UNT] и [_COR_2].[DESK_TILE_2]=[_WORD_].[DESK_TILE]???
SQL
1
2
SELECT DISTINCT [_COR_2].Код1
FROM _COR_2 INNER JOIN _WORD_ ON ([_COR_2].DESK_TILE_2 = [_WORD_].DESK_TILE) AND ([_COR_2].Код = [_WORD_].MARK_UNT);
1
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 10
15.02.2016, 12:51  [ТС] 9
Kkarn, От "заказчика" приходит таблица [_COR_] (она же связана в экселе. Можно рассуждать на примере любой).
Мы ("исполнитель") в результате работы, получаем таблицу [_WORD_].
Связующие поля [_COR_].[код] и [_WORD_].[MARK_UNT].
Поля соответствия которых я хочу проверить [_COR_].[DESK_TILE_2] и [_WORD_].[DESK_TILE].
0
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
15.02.2016, 14:18 10
Хм... что-то у меня не вырисовывается. По сути, с помощью мастера запросов я как раз и пытался, как теперь понимаю, построить то, о чем выше писал Grin640. Только вот оно не дает установить связи именно так, чтобы между кодами было один к одному, а по второму параметру - как "все" в таблице задания и "только те, которые совпадают" в таблице результата. При такой организации связей Акс ругается "Невозможно выполнить иснтрукцию SQL" и т.д. И скорее всего, он и прав, что ругается... Скрин прилагаю.
Миниатюры
Сравнить две таблицы с разнородной информацией (много к много)  
0
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
15.02.2016, 14:21 11
В данном запросе Акс позволяет сделать только если обе связи идут стрелками на вторую таблицу. И в таком случае запрос просто пустой, не выдает результатов. Специально проверил и внес данные, которые должны были попасть в отчет - не попадают... Что-то тут не так.
0
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 10
15.02.2016, 14:38  [ТС] 12
ltv_1953, почти. Подобным запросом я получаю анти то, что мне надо. Тоесть "правильные записи".
Пытаясь инвертировать условия получаю либо пустую выдачу, как писали выше, либо мешанину кодов с повторами.
0
Эксперт MS Access
26726 / 14405 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.02.2016, 14:50 13
Лучший ответ Сообщение было отмечено poytu как решение

Решение

Предположительно запрос такой (по заветам Grin640). Правда неясно что должно быть в селекте, поэтому всунул полную таблицу _WORD_
SQL
1
2
3
4
SELECT [_WORD_].*
FROM [_WORD_] LEFT JOIN [_COR_2] 
  ON ([_COR_2].DESK_TILE_2 = [_WORD_].DESK_TILE) AND ([_COR_2].Код = [_WORD_].MARK_UNT)
WHERE [_COR_2].DESK_TILE_2 IS NULL AND [_COR_2].Код IS NULL
1
Эксперт MS Access
16368 / 6801 / 1495
Регистрация: 21.06.2012
Сообщений: 12,572
15.02.2016, 14:55 14
Цитата Сообщение от poytu Посмотреть сообщение
Подобным запросом я получаю анти то, что мне надо. Тоесть "правильные записи".
Исключить "правильные". Запрос1 дает "правильные", тогда "не правильные"
SQL
1
2
3
SELECT [_COR_2].*
FROM _COR_2 LEFT JOIN Запрос1 ON [_COR_2].Код1 = Запрос1.Код1
WHERE Запрос1.Код1 IS NULL;
0
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
15.02.2016, 14:55 15
mobile, Кстати, да) В таком виде у меня отобралось) Как всегда, спасибо за магию)
0
0 / 0 / 0
Регистрация: 15.02.2016
Сообщений: 10
18.02.2016, 16:33  [ТС] 16
Подскажите, вот подобное скриншоту это уже формой надо добиваться или запросом можно?
Миниатюры
Сравнить две таблицы с разнородной информацией (много к много)  
0
Эксперт MS Access
6793 / 4382 / 282
Регистрация: 12.08.2011
Сообщений: 12,964
19.02.2016, 03:25 17
Цитата Сообщение от poytu Посмотреть сообщение
вот подобное скриншоту
Скриншот делается кнопкой PrintScreen на клавиатуре, а не фотоаппаратом
0
шапоклякистка 8-го дня
3670 / 2230 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
19.02.2016, 08:26 18
Цитата Сообщение от poytu Посмотреть сообщение
подобное скриншоту
Что на скриншоте является существенным, в чем должно проявляться подобие: речь о данных или внешнем оформлении?

Внешнее оформление только формой, запросы имеют стандартный вид, который не меняется.

Если речь о данных, то запроса более чем достаточно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2016, 08:26

Фильмы о танцах (где много, ну очень много танцев)
Привет всем! Может кто-нибудь посоветует мне фильмы, где люди много и классно танцуют???

Что лучше - много строк или много колонок?
Не могу определиться как лучше хранить сводную таблицу. Задача такая: Есть таблица накопления...

слишком много аргументов в вызове функции или как создать много файлов на рабочем столе
Мне нужно создать на рабочем столе очень много файлов вот команда для создания 1 файла wchar_t...

SELECT: выбрать много много полей
Вот запрос: SELECT * FROM &quot; . PREFIX . &quot;_post WHERE approve='1' and category='' ORDER BY rating...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru