2014-01-31 3 views
0

Я могу просто устать, но я не могу понять, что происходит. У меня два запроса. В запросе 1 есть 10 полей. В запросе 2 есть 5 полей. Поля с 1 по 3 одинаковы в обоих запросах. Я пытаюсь написать запрос выбора и простое поле добавления 5 из Query2 в Query1, поэтому мой результат должен быть Query1 с дополнительным полем (Query2.field5).Выберите Query имеет неожиданные несколько записей (MS Access)

Я присоединяюсь к первым 3 полям из обоих запросов и выбираю все записи в query1 и только те, которые соответствуют запросу2. Я не знаю sql, поэтому я использую конструктор запросов. Я ожидаю получить такое же количество записей, которые у меня есть из запроса 1, но вместо этого у меня есть 3 или более раз. Может кто-то сказать мне, что я делаю неправильно. Я даже попытался обратить вспять соединения, но все же, похоже, получил такие же дополнительные записи.

Заранее спасибо.

Вот запрос:

поля, которые в общем являются DivisionName, SupplierID = VendorID и CommodityName.

SELECT [Part Revenue Exposed Query P1].DivisionName, 
     [Part Revenue Exposed Query P1].CommodityName, 
     [Part Revenue Exposed Query P1].SupplierName, 
     [Part Revenue Exposed Query P1].PartNumber, 
     [Part Revenue Exposed Query P1].PartDescription, 
     [Part Revenue Exposed Query P1].BUCode, 
     [Part Revenue Exposed Query P1].ProductLine, 
     [Vendor Risk Score Query].VendorScore 

FROM [Part Revenue Exposed Query P1] LEFT JOIN [Vendor Risk Score Query] 

ON ([Part Revenue Exposed Query P1].DivisionName = [Vendor Risk Score Query].DivisionName) 
    AND ([Part Revenue Exposed Query P1].SupplierID = [Vendor Risk Score Query].VendorID) 
    AND ([Part Revenue Exposed Query P1].CommodityName = [Vendor Risk Score Query].CommodityName); 
+1

может вы можете показать свою запрос? –

+0

показать структуру вашего стола и указать их мощность. Каковы основные ключи двух таблиц. –

+0

Привет, спасибо за ответ. Код был добавлен. Это не таблицы, а запросы запросов. Только идентификатор поставщика является первичным ключом в исходной таблице ... других полей нет, но я могу изменить его, чтобы использовать идентификаторы вместо имен. – user3203169

ответ

0

Это, скорее всего, связано с наличием нескольких записей в [Vendor Risk Score Query], соответствующих условию в разделе [Доход от выставленного дохода P1]. то есть, если соответствующие одной записи [доходная часть выдержаны запросы P1] со значениями:

DivisionName = 'TestDiv', SupplierID = 1, CommodityName = 'TestCommodity'

может быть несколько записей в [Оценке риски поставщика Запрос] со значениями

DivisionName = 'TestDiv', SupplierID = 1, CommodityName = 'TestCommodity'

, то он возвращает больше записей, чем количество записей в [доходной части выдержаны запросы P1]

+0

Свагата, ты выиграл приз! Спасибо. Я считал само собой разумеющимся (потому что я торопился), что данные в базовой таблице не имели дубликатов записей. Еще раз спасибо. – user3203169

0

Проверьте соединение.

AND ([Part Revenue Exposed Query P1].SupplierID = [Vendor Risk Score Query].VendorID) 

Является ли поставщик для поставщика правильным?

Вы сказали, что первые три поля одинаковы. Но он показывает только два одинаковых.

+0

Hi Crafty. Да, они одинаковы. – user3203169

+0

Но они разные имена. Вот почему я спрашиваю. –

+0

Да, они называются по-разному от разных таблиц, но от одного до многих в исходных таблицах. – user3203169