У меня есть две таблицы. Таблица продаж, содержащая номера счетов, номера деталей и количества и таблицу Bundles, содержащие идентификатор пакета, номера и количества деталей. Например:SQL Relational Division с дополнительными критериями
продаж:
Invoice_No | Part_No | QTY
-----------------------------
1 |aaa |1
1 |bbb |2
1 |ccc |1
2 |aaa |1
2 |ccc |1
2 |ddd |2
3 |aaa |1
3 |bbb |1
3 |ccc |1
Связки:
BID | Part_No | QTY
-------------------
1 |aaa |1
1 |bbb |2
1 |ccc |1
2 |aaa |1
2 |ccc |1
2 |ddd |1
Я хочу, чтобы запрос, чтобы идентифицировать счета-фактуры, которые содержат все части на данной связке, по крайней мере, в необходимых количествах.
т.е. счета 001 содержит пакет 1 и счет-фактура 002 содержит комплект 2
Я был в состоянии получить часть пути там, глядя на примеры здесь: https://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/
SELECT S.Invoice_No, 1 as Bundle From Sales as S
INNER JOIN (SELECT BID, Part_No, QTY FROM Bundles WHERE BID=1) as B
ON S.Part_No=B.Part_No
GROUP BY S.Invoice_No
HAVING COUNT(S.Part_No)=(SELECT count(Part_No) FROM Bundles WHERE BID=1)
Однако этот запрос неправильно идентифицирует счет-фактуру 3 как имеющую комплект 1. Я также хотел бы не придумывать отдельный запрос для каждого пакета, так как это требует времени для добавления большего количества пакетов в будущем.
В качестве расширения я также хотел бы иметь возможность идентифицировать счет-фактуру, которая содержит более одного пакета (например, счет-фактура может содержать 2 пакета 1 или один комплект 1 и 1 комплект 2).
Я использую MS ACCESS для этих данных.
В вашем запросе используется поле «BID», но такого поля в таблице пакетов нет. Существует поле под названием «ID». Какой из них правильный? –
Как вы знаете, счет 001 содержит пакет 1? Связан ли BundleId с InvoiceId? Либо таблица связок реплицирует информацию из таблицы счетов, либо есть другая таблица, которая объединяет эти 2 объекта (или должна быть, если их нет) –
Я предполагаю, что фактический способ определить, связан ли счет-фактура с конкретным пакетом что в комплекте содержатся все совпадающие значения part_no счета-фактуры? Хотя это далеко и далеко от того, что делает ваш текущий запрос. –