powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Найти значение поля одной таблицы среди текста поля второй таблицы.
7 сообщений из 7, страница 1 из 1
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023324
vedmedik777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеются две таблицы Contract и Exp2020
Первая имет вид:
Contract
Номер договораПредмет договора123/45Покупка телевизоров 43/56Оплата интернета за июнь 20203116/2323 Демонтаж окон

А вторая :
Exp2020
ОписаниеСотрудникСтатусДог. 32/89 Покупка ковриков для мышиПанковПодписанПокупка ТВ марки "Траляля" по договору №123/45МалаховаНа рассмотренииУслуги связи оплата. 06.2020 Номер договора 43/56ЗолотаревПодписанОконный демонтаж. контакт : 3616/2323ЖуковаАнулирован

Как видно в поле описания полный хаос. Но номера договоров всегда указаны в формате */*
В запросе необходимо зная номер договора из Contract подцепить Статус и сотрудника
Номер договораПредмет договораСтатусСотрудник
Пробую эти скрипты, но результат: пустые запросы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT [Contracts].[Номер договора], [Contracts].[Предмет договора], Exp2020.Cотрудник, Exp2020.Статус
FROM Exp2020, [Contracts]
GROUP BY [Contracts].[Номер договора]
HAVING SUM(InStr(1,"[Exp2020]![Описание]","[Contracts]![Номер договора]","1"))>0;

SELECT [Contracts].[Номер договора], [Contracts].[Предмет договора],  Exp2020.Cотрудник, Exp2020.Статус
FROM Exp2020, [Contracts]
WHERE  [Contracts].[Номер договора] like Exp2020.Описание



Не понимаю, почему запросы не выполняются?
Если вместо [Contracts]![Номер договора] подставить просто текст, то запросы выполняются, но мне надо сопоставить именно значения в двух табличках.
...
Рейтинг: 0 / 0
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023341
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vedmedik777
Код: sql
1.
HAVING SUM(InStr(1,"[Exp2020]![Описание]","[Contracts]![Номер договора]","1"))>0;


это лишнее
vedmedik777
Код: sql
1.
WHERE  [Contracts].[Номер договора] like Exp2020.Описание

тоже не правильно
Код: sql
1.
WHERE Exp2020.Описание like '*' & [Contracts].[Номер договора] & '*'
...
Рейтинг: 0 / 0
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023437
vedmedik777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, спасибо! Запрос выполняется. А можно ли задать ограничения если договоры имеют одинаковое начало и разный конец?
Например: 123/6 , 123/66 , 123/668. Если поле Номер договора равно 123/6, то запрос находит в поле описание (123/6 , 123/66 , 123/668)
...
Рейтинг: 0 / 0
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023470
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помню дословно-одно из основных правил ACCESS гласит что таблица должна максимально полно(в нужном Вам объеме) описывать одну сущность.
Вы же пытаетесь описать одну сущность,договор, в двух таблицах. Это возможно только при связи 1:1-но зачем это,если таблица допускает 255 полей (упаси меня бог от такой таблицы). А то чего Вы хотите легко решается с помощью пользовательской функции с использованием Replace, Mid, InStr,но это не гарантирует дальнейшую "беспроблемность"
...
Рейтинг: 0 / 0
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023502
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пойдет-не:
...
Рейтинг: 0 / 0
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023505
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПыСы:если оставить 1 таблицу,как в примере, проблем в дальнейшем не будет
...
Рейтинг: 0 / 0
Найти значение поля одной таблицы среди текста поля второй таблицы.
    #40023556
vedmedik777
court, спасибо! Запрос выполняется. А можно ли задать ограничения если договоры имеют одинаковое начало и разный конец?
Например: 123/6 , 123/66 , 123/668. Если поле Номер договора равно 123/6, то запрос находит в поле описание (123/6 , 123/66 , 123/668)
В вашем примере номер договора находится или в конце предложения, или после него идет пробел, возможно ".". А перед ним или пробел, или "№", возможно ".". Но в обоих случаях точно не цифра . Не на 100%, но подойдет такое условие:
Код: xml
1.
2.
WHERE (Exp2020.Описание like '*[!0-9]' & [Contracts].[Номер договора]')
  OR (Exp2020.Описание like '*[!0-9]' & [Contracts].[Номер договора] & '[!0-9]*')
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Найти значение поля одной таблицы среди текста поля второй таблицы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]