Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
20 / 20 / 0
Регистрация: 22.08.2012
Сообщений: 103

Запрос на выборку записей из таблицы по данным из другой

31.10.2012, 13:06. Показов 2154. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добродня всем! Помогите с запросом, пожалуйста!
Есть две таблицы, в одной (Основная) база объявлений, в отдельном поле номера телефонов. Телефоны могут быть городские (ХХХХХ), мобильные (89ХХХХХХХХ). Может указываться как один телефонный номер, так и несколько, через запятую.
Есть вторая таблица (Вспомогательная), в которой собираются номера телефонов, которые нужно отследить.
В текущей версии базы могу лишь отслеживать те номера в основной таблице, которые указаны во вспомогательной в том виде, в котором они были туда занесены, допустим (44215, 8988888888). Но если в основной таблице появится запись, с телефонами зеркально перевернутыми (8988888888, 44215), я эту запись уже не увижу.
Необходимо построить запрос таким образом, чтобы во вспомогательной таблице хранились номера по одному на строку, без запятых, но чтобы можно было отбирать в основной те записи, в которых хотя бы один из них соответствует!
Понимаю, что описал криво, но может хоть какие то идеи есть
Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2012, 13:06
Ответы с готовыми решениями:

Сделать выборку из одной таблицы по данным другой
есть такое задание. Две таблицы Customer 1.ID 2.Name 3.Adress и Orders

Запрос на выборку по данным из textBox
Как создать запрос, чтобы по данным введенным в текстбоксе мы выбрали одну строку из бд Добавлено через 49 минут ну хоть кто нибудь...

Ускорить выборку записей из таблицы
Привет всем, прошу помощи.. В таблице более 100-та записей, и при выводе с базы, эти 100 пользователей выводит более 5-ти минут. ...

10
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
31.10.2012, 13:14
Создайте подчиненную "Основной" таблицу с телефонами, так, чтобы у одной записи в основной могло быть несколько телефонов. Поместите туда телефоны - и проблемы с извлечением отдельных телефонов из строки с несколькими не станет.
1
20 / 20 / 0
Регистрация: 22.08.2012
Сообщений: 103
31.10.2012, 13:22  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Создайте подчиненную "Основной" таблицу с телефонами, так, чтобы у одной записи в основной могло быть несколько телефонов. Поместите туда телефоны - и проблемы с извлечением отдельных телефонов из строки с несколькими не станет.
Да, но при появлении новых записей в Основной таблице могут появляться перевернутые номера.
Этим вариантом сейчас и пользуюсь, но нужно другое решение.
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
31.10.2012, 13:32
Т.е. Вам нужно, чтобы при вводе/коррекции поля с телефонами в записи Основной происходило извлечение телефонов из него и помещение их в связанные с этой записью записи таблицы телефонов?
Если это из текста объявления, то вряд ли удастся сделать это всегда (фантазия людей, подающих объявления, безгранична даже в написании своих телефонов). Если есть четкие правила, по которым пишутся два и более телефон - сформулируйте их (это всегда список через запятую, или ...).
0
20 / 20 / 0
Регистрация: 22.08.2012
Сообщений: 103
31.10.2012, 13:41  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Если есть четкие правила, по которым пишутся два и более телефон - сформулируйте их (это всегда список через запятую, или ...).
В основной таблице телефоны уже по четким правилам, городские в формате ххххх, мобильные 89хххххххх. Если в строке более одного телефона, то формат следующий "телфон, телефон, телефон (и т.д.). Если номер один, то просто указывается телефон без дополнительных символов.
Вспомогательной таблицей я отслеживаю номера, которые мне не интересны, чтобы при появлении новых записей уже не тратить на них свое время. Я добавил лог. поле и запрос на добавление во вспомогательную таблицу, вторым запросом на обновление основной таблицы я нахожу совпадающие номера и обновляю лог. поле.
Если же номера в основной таблице поменяются местами (в случае, когда их несколько), то запрос на обновление уже не сможет их найти
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
31.10.2012, 14:15
Во вспомогательной таблице отдельные номера телефонов или такие же строки с несколькими, как в основной? Если отдельные номера, то сравнивайте сначала с первым из основной, потом со вторым из основной и т.п., тогда порядок их в основной (проблема же в этом?) не будет иметь значения.
1
20 / 20 / 0
Регистрация: 22.08.2012
Сообщений: 103
31.10.2012, 15:37  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Во вспомогательной таблице отдельные номера телефонов или такие же строки с несколькими, как в основной? Если отдельные номера, то сравнивайте сначала с первым из основной, потом со вторым из основной и т.п., тогда порядок их в основной (проблема же в этом?) не будет иметь значения.
Сейчас во вспомогательной как и в основной, а хотелось бы чтобы по одному и путем сравнения.
Только вот как сравнивать? можно какой то пример?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
31.10.2012, 16:47
Если Телефоны - это строка с двумя телефонами, то Телефон1 = Left(Телефоны, InStr(1, Телефоны, ",") - 1), а Телефон2 = Mid(Телефоны, InStr(1, Телефоны, ",") + 2).
Но почему бы в вспомогательной таблице не хранить телефоны по одному? Хранить список номеров телефонов в строке - неправильно, если предполагается потом обработка отдельных номеров телефонов.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,375
01.11.2012, 02:51
А если в VBA, то можно и так:
VB.NET
1
2
3
4
?split("12234345, 4364547",",")(1)
 4364547
?split("12234345, 4364547",",")(0)
12234345
0
20 / 20 / 0
Регистрация: 22.08.2012
Сообщений: 103
01.11.2012, 11:07  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Если Телефоны - это строка с двумя телефонами, то Телефон1 = Left(Телефоны, InStr(1, Телефоны, ",") - 1), а Телефон2 = Mid(Телефоны, InStr(1, Телефоны, ",") + 2).
Но почему бы в вспомогательной таблице не хранить телефоны по одному? Хранить список номеров телефонов в строке - неправильно, если предполагается потом обработка отдельных номеров телефонов.
Телефонов в Основной таблице может быть сколько угодно, от одного и выше, там уж кому сколько не лень было опубликовать. Потому и приходится их тупо копировать во вспомогательную.

Добавлено через 1 минуту
Нужно, чтоб брался телефон из вспомогательной и сверялся со всеми телефонами в основной на наличие совпадения хотя бы одного из перечисленных через зяпятую
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
01.11.2012, 11:46
Выложите "огрызок" базы с Основной и Вспомогательной таблицами и формой ввода Основной в формате .mdb. Тогда рекомендации станут конкретными, Вам же показали (два варианта) как выделить номера телефонов, и ... .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.11.2012, 11:46
Помогаю со студенческими работами здесь

Запрос на выборку записей из БД по диапазону дат
Выполняю следующий запрос: DM.ADOQuery1.Close; DM.ADOQuery1.Active := false; DM.ADOQuery1.SQL.Clear; ...

SELECT запрос на выборку соседних записей
Здравствуйте. Необходимо получить соседние записи из БД. К примеру если имеем записи: Запись 1 Запись 2 Запись 3 Запись 4 ...

Запрос на выборку записей из разных таблиц
Добрый день форумчане. Необходимо сделать запрос на добавление в таблицу в Delphi из базы. Запрос должен брать записи с разных таблиц. ...

Вывод данных из таблицы по данным из другой таблицы
Здравствуйте Использую БД-Access+ADO Имеется БД с несколькими таблицами(Контрагенты,Договора,Лицензии,Сертификаты) Лицензии и...

Поиск из одной таблицы по данным другой таблицы
Всем привет. Есть таблица студенты и в ней есть id_stud есть вторая таблица работы студентов, в ней тоже есть поле id_student. В таблицу...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru