Не работает NOT IN c подзапросом.

Лысёк
Дата: 04.03.2016 10:15:50
Ув. спецы, имеется таблица [Пациенты полная] и таблица [Амбулаторный прием], в последней содержатся фамилии некоторых пациентов из первой. Надо сделать запрос, который выводит ВСЕХ из [Пациенты полная], КРОМЕ тех, фамилии которых есть в [Амбулаторном приеме].
Пишу:
SELECT * 
FROM [Пациенты полная]
WHERE [Фамилия, имя, отчество] NOT IN
( SELECT [ФИО набл] FROM [Амбулаторный прием]);

В итоге выводит пустую таблицу. Если убрать NOT, то выводит из [Пациенты полная] всех, кто есть в [Амбулаторном приеме], т.е. без NOT все работает. Что неправильно?
Akina
Дата: 04.03.2016 10:37:01
Перепиши запрос на JOIN. Кстати, и работать будет побыстрее...

Лысёк
Что неправильно?

Возможно, в [Амбулаторный прием] есть запись с [ФИО набл] Is Null ?
Лысёк
Дата: 04.03.2016 10:41:13
Akina, спасибо.
вроде пока так работает:

SELECT * 
FROM [Пациенты полная]
WHERE [Фамилия, имя, отчество] NOT IN
( SELECT [ФИО набл] FROM [Амбулаторный прием]
INNER JOIN [Пациенты полная]
ON [Амбулаторный прием].[ФИО набл] = [Пациенты полная].[Фамилия, имя, отчество]);
__Michelle
Дата: 04.03.2016 10:48:29
Запрос без подчиненных (так называется) - посмотрите.
SELECT [Пациенты полная].* 
FROM [Пациенты полная] LEFT JOIN [Амбулаторный прием] ON [Пациенты полная].[Фамилия, имя, отчество]=[Амбулаторный прием].[ФИО набл] 
WHERE [Амбулаторный прием].[ФИО набл] Is Null;

[Пациенты полная].[Фамилия, имя, отчество] - это такое название поля?
И все компоненты в одном поле?
Хм....
Akina
Дата: 04.03.2016 11:08:33
Лысёк
вроде пока так работает:
Жуть какая...
Лысёк
Дата: 04.03.2016 11:59:41
__Michelle,
работает также как с иннер джойн. если что, я не программер, а врач, поэтому если туплю, то простите.
Анатолий ( Киев )
Дата: 04.03.2016 12:03:34
Лысёк, если в таблице встречаются полные тезки или в ФИО одной из таблиц допущена ошибка (например - лишний пробел), то ваш запрос вернет неправильный результат.
Настоятельно рекомендуется иметь в "Пациенты полная" ключевое поле-счетчик (ID), и этот ID сохранять в "Амбулаторный прием" вместо ФИО. Ну и Ф И О лучше хранить в разных полях.
Лысёк
Дата: 04.03.2016 12:06:57
Анатолий ( Киев ),
спасибо за совет, исправлю.
__Michelle
Дата: 04.03.2016 12:08:46
Лысёк
__Michelle,
работает также как с иннер джойн. если что, я не программер, а врач, поэтому если туплю, то простите.
1. "Дает тот же результат" <> "Работает так же".
2. Взялся за гуж, не говори, что не дюж.)))
3. "Выписывать рецепты" по Access Вы, тем не менее, тоже не прочь. Почти в каждой теме.)))