![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
ElenaG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.2.2005 Репутация: нет Всего: нет |
При связи в запросе на выборку 2 таблиц по нескольким полям (Улица, дом, буква, корпус, квартира), выбираются записи только со всеми заполненными полями, а если адрес не содержит корпуса, запись теряется. Как быть????
|
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Вместо INNER JOIN использовать LEFT/RIGHT JOIN
-------------------- Никогда не говори никогда |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Пересмотрите структуру базы - она неправильная. Связи должны быть только одного типа: Уникальный ID одной таблицы <- один ко много -> Референсный ID в другой таблице Связи иного типа обоснованы крайне редко и на очень сложных структурах. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ElenaG |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.2.2005 Репутация: нет Всего: нет |
Это помогает только при связи по одному полю, а если связывать 2 и более полей, то записи теряются((
Добавлено @ 16:25
Я пытаюсь "пересечь" 2 разные базы данных. Есть одна таблица с адресом и вторая с адресом и телефоном, мне надо при совпадении адреса добавить тел. в первую таблицу. |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
ElenaG
Повторяю - не используйте для связи несколько полей. Как, впрочем, и составные вычисляемые поля. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ElenaG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.2.2005 Репутация: нет Всего: нет |
А как тогда я идентифицирую адеса???? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Разделите каждую из таблиц на часть "Адрес" и часть "Все остальное", введя ID адреса, причем из одной путем CREATE TABLE, а из другой APPEND TABLE в созданную ранее. На основании Count>1 произведите замену (быстрее программно) ID во второй таблице на меньший. В результате получите 1 таблицу Адрес и 2 связанные с ней таблицы. Остальное элементарно.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
ElenaG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.2.2005 Репутация: нет Всего: нет |
А как это сделать программно? ![]() Добавлено @ 16:51 и еще одна проблема: в 1-ой таблице уже 4850000 записей ![]() |
|||
|
||||
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Не знаете... ну тогда делаем запросами... 1) Создали мы таблицу адресов ID Улица Дом ..... 2) Добавляем временное поле ID Улица Дом ..... RefID 3) Копируем в новое поле значения SET RefID=Min(ID) Group By (Улица+Дом+...) 4) Корректируем ссылки во 2 связанной таблице Set Таблица2!AddrID=Адресав!RefID 5) Меняем связь к полю ID на связь к полю RefID 6) Убиваем поле ID - за ненадобностью. Все...
Это не проблема... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
ElenaG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.2.2005 Репутация: нет Всего: нет |
Спасибо. Попробую.
|
|||
|
||||
Impulse |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 5.1.2005 Где: г. Чита Репутация: нет Всего: нет |
Akina что мне это все не нравится. Слишком просто. И в частности Count(Адрес) > 1, где адрес составное значение полей, и где это здесь ->
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS Access" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS Access | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |