Добавить запрос не работает Access 2016 - PullRequest
0 голосов
/ 10 мая 2018

Я строю систему бронирования для стоматологов. Я построил все это и до вчерашнего дня он работал нормально.

У меня есть запрос на добавление, к которому я хотел бы добавить Operation_ID, Treatment_ID и Patient_ID из tblOperation_Schedule, где Op_Complete = 1, а Operation_ID еще не существует в таблице счетов.

По какой-то причине строки не добавляются, но я не могу определить проблему. Я смотрел на это, пытаясь придумать другой способ, которым это должно быть написано, но я ни в коем случае не эксперт, и я вижу проблему. Запрос ниже.

INSERT INTO tblInvoices 
( Treatment_ID, Operation_ID, Patient_ID )

SELECT 
tblOperation_Schedule.Treatment_ID, 
tblOperation_Schedule.Operation_ID, 
tblOperation_Schedule.Patient_ID

FROM tblOperation_Schedule 
INNER JOIN tblInvoices ON 
tblOperation_Schedule.Operation_ID = tblInvoices.Operation_ID
WHERE 
(((tblOperation_Schedule.Operation_ID) Not In (Select [Operation_ID] 
from tblInvoices)) 
AND 
(((tblOperation_Schedule.Op_Complete)="1"));

Кто-нибудь может обнаружить проблему с этим или предложить другую причину, почему это может не работать, пожалуйста? Спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

Ваша проблема в том, что вы делаете INNER JOIN из двух таблиц, используя Operation_ID, затем в WHERE вы проверяете tblOperation_Schedule.Operation_ID NOT ANY Operation_ID FROM tblInvoices. Таким образом, ваше WHERE условие конфликтует с вашим JOIN условием, и оно не создает строки взамен.

По крайней мере, вы должны изменить свой запрос на:

INSERT INTO tblInvoices 
    ( Treatment_ID, Operation_ID, Patient_ID )
SELECT Treatment_ID, 
    Operation_ID, 
    Patient_ID
FROM tblOperation_Schedule 
WHERE
    Operation_ID NOT IN (
        SELECT [Operation_ID] 
        FROM tblInvoices
    )
    AND Op_Complete = "1";
...