Несколько столбцов непревзойденного запроса MS Access SQL

#sql #ms-access

#sql #ms-access

Вопрос:

Я ищу, где совпадение номера заказа и номера детали не существует между двумя таблицами.

В принципе, у меня есть ODBC-соединение, загружающее данные из нашей базы данных для определенного поставщика, у меня также есть отчет о наших открытых заказах от того же поставщика в формате Excel.

У меня есть оба набора настроек данных.

Что я пытаюсь сделать, так это найти, где комбинация номера заказа и номера детали в списке поставщика не существует в данных, загруженных из нашей системы (и наоборот в отдельном запросе, но отменяющем объединение)

У меня также есть еще один отдельный запрос, проверяющий обратное, есть ли какие-либо комбинации номеров заказов или номеров деталей в списке поставщиков, которые есть в наших данных.

Это SQL для поиска несопоставимых комбинаций из списка поставщиков и данных из нашей базы данных:

 SELECT [Table1].[Field1], [Table1].[Field2] 
INTO s
FROM [Table1] 
LEFT JOIN [Table2] ON ([Table1].[Part No] = [Table2].Field2) AND ([Table1].[Field1] = [Table2].Field1)
WHERE ((([Table2].Field1) IS NULL) AND (([Table2].Field2) IS NULL));
 

По сути, это непревзойденный мастер запросов, но добавляющий второй столбец в микс.

Но по какой-то причине при перекрестных ссылках на результаты похоже, что это приводит к отображению практически каждой записи из таблицы1.

Не уверен, что я делаю неправильно, надеюсь, я понимаю…

Комментарии:

1. Пожалуйста, предоставьте образцы данных и желаемые результаты. Похоже, запрос работает нормально, но данные не соответствуют вашим ожиданиям.

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

Ответ №1:

похоже, что это приводит к тому, что в значительной степени отображается каждая запись из таблицы1

Это означает, что ваше left join следующее условие не выполняется ни для одной из записей Table2 .

 ([Table1].[Part No] = [Table2].Field2) AND ([Table1].[Field1] = [Table2].Field1)
 

Что в конечном итоге означает, что [Table2].Field1 [Table2].Field2 в результирующем запросе and будет равно null, а ваше WHERE предложение ( ((([Table2].Field1) Is Null) AND (([Table2].Field2) Is Null)) ) станет true для каждой записи.

Комментарии:

1. хм, другими словами, я все делаю неправильно?