Mysql выбор из 2 таблиц при исключении всей строки, если были найдены конкретные данные - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть 2 таблицы, в которых содержится следующее:

Таблица 1: пациент (содержит почти всю необходимую мне информацию) Таблица 2: ProtocolLog (содержит процедуры, которые были выполнены для пациентов, перечисленных в таблице 1)

Я хочу просмотреть всех пациентов, которые имеют непогашенный остаток, но я также хочу исключить пациентов из этого списка, которые все еще имеют непогашенный баланс, НО их журнал процедур содержит специальные коды, которые идентифицируют их как случаи ортодонтии.У меня нет ни одного случая ортодонтии в моем отчете.

в Таблице 1, есть эта информация:

Patient Name | Patient Number | Estimated Balance
Jon          |    5           |      120
Sara         |    19          |      500

в Таблице 2:

Patient Number | Procedure CodeNum
5              |         222
5              |         223
5              |         244
5              |         80*****
19             |         80
19             |         10

, если я запускаю свой запрос и исключаю значение CodeNum, которое находится между222 и 244, я все равно получу Пациента Джона в результате запроса, потому что у него была процедура № 80, которая является обычной.Как я могу исключить Джона?

SELECT distinct patient.Fname,patient.Lname,patient.PatNum,patient.EstBalance 
FROM opendental.patient,opendental.procedurelog 
where EstBalance>=1 
and patient.PatNum = procedurelog.PatNum 
and procedurelog.CodeNum not between 222 and 244;

Я использую различные, потому что меня не волнуют значения в таблице 2, таблица 2 только помогает мне определить список процедур, которые выполнял пациент.

1 Ответ

0 голосов
/ 09 февраля 2019

Если я правильно понимаю, вы хотите NOT EXISTS, а не JOIN:

SELECT p.Fname, p.Lname, p.PatNum, p.EstBalance 
FROM opendental.patient p
WHERE EstBalance >= 1 AND
      NOT EXISTS (SELECT 1
                  FROM opendental.procedurelog pl
                  WHERE pl.PatNum = p.PatNum AND
                        pl.CodeNum not between 222 and 244
                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...