#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. хм, другими словами, я все делаю неправильно?