В попытке создать список ордеров (каждый с несколькими элементами), которые удовлетворяют некоторым критериям, я попытался создать типичный оператор LEFT JOIN
.Внутренняя связь между двумя запросами, приводящими к «Недействительной операции»
Попытка выглядит так
SELECT
Q1.Order_Number,
OD.Item_Num
FROM
(
SELECT
OS.Order_Number
FROM
[4-Open_Order_Summary] AS OS
WHERE
Date() >= OS.Ship_Date AND
OS.Back_Ordered > 0
)
AS Q1
LEFT JOIN [1-Open_Order_Data] AS OD
ON Q1.Order_Number = OD.Order_Number
Выполнение этого запроса дает мне необъяснимую «Недопустимая операция» ошибка. Исследование этой ошибки в отношении Access SQL привело меня к вопросу this о StackOverflow, относящемся к нескольким операторам JOIN
разных типов, и this вопрос о ветке суперпользователя, относящийся к FULL OUTER JOIN
операторам. Однако мне не удалось найти вопросы, связанные с одним заявлением LEFT JOIN
.
В моих попытках разрешить это я сделал следующее;
Изменение
ON Q1.Order_Number = OD.Order_Number
к
ON Q1.Order_Number LIKE OD.Order_Number
аварий Доступ
Запуск
SELECT
Q1.Order_Number,
FROM
(
SELECT
OS.Order_Number
FROM
[4-Open_Order_Summary] AS OS
WHERE
Date() >= OS.Ship_Date AND
OS.Back_Ordered > 0
)
AS Q1
возвращает предполагаемые порядковые номера.
Это решение моей проблемы и получение желаемого результата. Я планирую оставить вопрос открытым до завтра, если кто-нибудь еще увидит, что это может перезвонить с некоторыми синтаксическими знаниями о том, почему то, что я сделал, не будет работать. Благодарим за помощь! – Fritz
В качестве дополнительной заметки вы можете использовать INNER JOIN здесь. Это позволит вам извлекать только те записи, которые существуют в обеих таблицах, в зависимости от вашего состояния (ов). – Ronny