powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отфильтровать определенный список
6 сообщений из 6, страница 1 из 1
Отфильтровать определенный список
    #39721998
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть база Access 2003, с которой работают уже 11 лет. С некоторых пор начались проблемы со статистикой в результате неправильного или не совсем корректного заполнения базы данными.
Например, в таблице "Заказы" в столбец "ФИО", куда заносили данные клиентов, стали заносить и названия дилеров. Хотя раньше с дилерами немного по другому работали.
В базе есть таблица "Дилеры", с которыми организация работает. Из этой таблицы в выпадающем списке в нужных формах названия дилеров подставляются в записи.
Проблема только в статистике.
При обработке таблицы "Заказы" в списки попадают и дилеры, чего не должно быть.
Как отфильтровать этих дилеров?
Код: sql
1.
2.
3.
SELECT Заказы.ФИО
FROM Заказы
WHERE (((Заказы.ФИО)<>(SELECT Дилеры.НазваниеДилера FROM Дилеры)));


Что-то типа такого...
На деле не работает. Появляется сообщение, что подчиненный запрос должен возвращать не более одной записи.
А как правильно задать весь список в исключение?
...
Рейтинг: 0 / 0
Отфильтровать определенный список
    #39722011
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37Что-то типа такого...
Код: sql
1.
2.
3.
SELECT Заказы.ФИО
FROM Заказы LEFT JOIN Дилеры ON Заказы.ФИО=Дилеры.НазваниеДилера
WHERE Дилеры.НазваниеДилера Is Null;


А вообще воспользуйся мастером построения запросов - "записи без подчинённых"
...
Рейтинг: 0 / 0
Отфильтровать определенный список
    #39722021
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Заработало! Спасибо за помощь.
...
Рейтинг: 0 / 0
Отфильтровать определенный список
    #39722091
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37С некоторых пор начались проблемы со статистикой в результате неправильного или не совсем корректного заполнения базы данными.
А вот это не допустимо (есть и маска ввода и проверка средствами VBA, заполнение полейСоСписком только значениями из списка) Короче доработайте БД
Это только первая из проблем-Вы её заметили (если база "серьезная", а не "игрушечная" уверен, что есть ещё)
...
Рейтинг: 0 / 0
Отфильтровать определенный список
    #39722130
Alex37
Код: sql
1.
2.
3.
SELECT Заказы.ФИО
FROM Заказы
WHERE (((Заказы.ФИО)<>(SELECT Дилеры.НазваниеДилера FROM Дилеры)));

Появляется сообщение, что подчиненный запрос должен возвращать не более одной записи. Правильно так:
Код: sql
1.
2.
3.
SELECT Заказы.ФИО
FROM Заказы
WHERE (((Заказы.ФИО) NOT In (SELECT Дилеры.НазваниеДилера FROM Дилеры)));

Еще вариант (работает быстрее):
Код: sql
1.
2.
3.
SELECT Заказы.ФИО
FROM Заказы
WHERE NOT EXISTS (SELECT * FROM Дилеры WHERE Дилеры.НазваниеДилера=Заказы.ФИО);

Вариант от Панург имеет недостаток. В некоторых случаях можно получить не обновляемый набор и дублирование записей.
...
Рейтинг: 0 / 0
Отфильтровать определенный список
    #39722211
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов АнатолийВариант от Панург имеет недостаток. В некоторых случаях можно получить не обновляемый набор и дублирование записей.Исходим из того что таблица Дилеры скорее всего справочник и поле НазваниеДилера уникально. Далее, запрос нужен для статистики и скорее всего не требует редактирования. Это исходные данные.
Да и самый быстрый из представленных.

Кривцов АнатолийЕще вариант (работает быстрее):
Код: sql
1.
2.
3.
SELECT Заказы.ФИО
FROM Заказы
WHERE NOT EXISTS (SELECT TOP 1 1 FROM Дилеры WHERE Дилеры.НазваниеДилера=Заказы.ФИО);

так, ИМХО, быстрее
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отфильтровать определенный список
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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