Иметь таблицу поставщиков, которые имеют «коды утверждения» (VNDAPP) и таблицу контрактов, которые имеют «коды требований» (COXA).Контракты могут иметь любое количество требований, и поставщики могут иметь любое количество разрешений.
VNDAPP: (vendor approvals table)
VNUM (vendor number)
REQMT (approval code)
COXA: (contract requirements table)
CONTR (contract number)
REQMT (requirement)
Нужно найти всех поставщиков, имеющих одобрения, которые, как минимум, соответствуют требованиям определенного контракта.
Пример контракта 7736 имеет требования № 1 и 10. Есть 27 поставщиков, у которых оба из них как минимум.Поскольку требования являются переменными, я не могу жестко закодировать их в запросе.Я не уверен, что это квалифицируется как проблема реляционного разделения ...
SELECT VNDNO
FROM VNDAPP
LEFT JOIN COXA ON VNDAPP.REQMT = COXA.REQMT
GROUP BY VNDAPP.VNDNO
HAVING Count(COXA.REQMT) = (SELECT count(*)
FROM COXA WHERE COXA.CONTR = '7736'
GROUP BY COXA.CONTR)
Что я делаю неправильно ??
Заранее спасибо!
Пример данных:
Contract Requirement (COXA):
CONTR REQMT
7736 1
7736 10
7737 1
7737 4
7737 6
7738 5
7739 1
Supplier Approval (VNDAPP):
VNDNO REQMT
10019 1
10020 1
10020 2
10020 10
10021 1
10021 4
10021 5
10021 6
Desired result:
CONTR VNDNO
7736 10020
7737 10021
7738 10021
7739 10019
7739 10020
7739 10021