2015-09-21 3 views
0

В попытке создать список ордеров (каждый с несколькими элементами), которые удовлетворяют некоторым критериям, я попытался создать типичный оператор 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 

возвращает предполагаемые порядковые номера.

ответ

1

Почему бы не попробовать что-то вроде следующего, если вы пытаетесь получить номера заказов из одной таблицы и связанные с ними детали заказа из другого?

SELECT 
    Q1.Order_Number 
    OD.Item_Num 
FROM 
    [4-Open_Order_Summary] Q1 
LEFT JOIN 
    [1-Open_Order_Data] OD 
     ON 
      OD.Order_Number = Q1.Order_Number 
WHERE 
    DATE() >= Q1.Ship_Date 
    AND Q1.Back_Ordered > 0 
+0

Это решение моей проблемы и получение желаемого результата. Я планирую оставить вопрос открытым до завтра, если кто-нибудь еще увидит, что это может перезвонить с некоторыми синтаксическими знаниями о том, почему то, что я сделал, не будет работать. Благодарим за помощь! – Fritz

+0

В качестве дополнительной заметки вы можете использовать INNER JOIN здесь. Это позволит вам извлекать только те записи, которые существуют в обеих таблицах, в зависимости от вашего состояния (ов). – Ronny

Смежные вопросы