У меня есть классическая конструкция формы с двумя списками (переместите строку из этого поля в это поле ...) Я хочу, чтобы в поле слева содержались все строки, которые НЕ находятся в поле справа.
Базовые данные находятся в отношении многих ко многим. PartNbr - XREF - Источник, где часть может иметь 0 или более источников ... так что у меня есть три таблицы, таблица Master Item, XREF и Source (также называемая "TP"). Поле справа выбирает всех партнеров из Master Item, у которых есть записи в таблице XREF, и показывает их в поле справа.
В поле слева должны отображаться все остальные детали в основной записи элемента TP (Сторонние поставщики) (детали Sourcable), которые НЕ находятся в поле справа. Поскольку это отношение многие ко многим, я использовал конструкцию SELECT DISTINCT. При этом источники строк для двух полей:
Поле слева («От»):
SELECT DISTINCT tblTPitemMaster.TPItemID,
tblTPitemMaster.TPItemVendorID,
tblTPitemMaster.TPItemNbr, tblTPitemMaster.TPItemDescription,
tblTPitemMaster.TPItemUnitCost, tblXrefItemTPItem.TPXRCPASItemID
FROM tblTPitemMaster
LEFT JOIN tblXrefItemTPItem
ON tblTPitemMaster.TPItemID = tblXrefItemTPItem.TPXRTPItemID
WHERE ((TPItemVendorID=590) AND (TPXRCPASItemID <> 10546))
ORDER BY tblTPitemMaster.TPItemVendorID
Вправо ("К") Поле:
SELECT tblXrefItemTPItem.TPXRPreferredVendor AS Rank,
tblVendor.[Vendor Name], tblTPitemMaster.TPItemNbr,
tblTPitemMaster.TPItemDescription, tblTPitemMaster.TPItemUnitCost,
tblXrefItemTPItem.TPXRID
FROM tblVendor INNER JOIN (tblTPitemMaster
INNER JOIN tblXrefItemTPItem
ON tblTPitemMaster.TPItemID = tblXrefItemTPItem.TPXRTPItemID)
ON tblVendor.ID = tblTPitemMaster.TPItemVendorID
WHERE TPXRCPASItemID=10546
ORDER BY tblXrefItemTPItem.TPXRPreferredVendor
Проблема в том, что я получаю каждую основную запись TPItem в левом поле. Должно быть что-то простое. Идеи?
Jim