두 개의 테이블이 있습니다. 송장 번호, 부품 번호 및 수량을 포함하는 판매 테이블과 번들 테이블, 번들 ID 포함, 부품 번호 및 수량. 예컨대 :추가 조건이있는 SQL 관계 구분
판매 :
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
나는 적어도 필요한 수량과 주어진 번들의 부품이 모두 포함 된 송장을 확인하는 쿼리를합니다. 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)
그러나 :
즉 송장 001이 번들을 포함 1 및 송장 002 내가 거기 여기에 예를보고하는 방식의 일부를 얻을 수있었습니다 2
번들을 포함 이 쿼리는 인보이스 3을 번들 1로 잘못 인식합니다. 각 번들마다 별도의 쿼리를 작성하지 않아도되므로 향후 번들을 추가하는 데 많은 시간이 소요됩니다.
확장 프로그램에서 둘 이상의 번들을 포함하는 인보이스 (예 : 인보이스에 2 개의 번들 1 또는 1 개의 번들 1 및 1 번들 2 포함)을 식별 할 수 있기를 바랍니다.
이 데이터는 MS ACCESS를 사용하고 있습니다.
쿼리에 "BID"라는 필드가 사용되지만 번들 테이블에 해당 필드가 없습니다. "ID"라는 필드가 있습니다. 어느 것이 옳은가요? –
송장 001에 번들 1이 들어 있음을 어떻게 알 수 있습니까? BundleId는 InvoiceId와 관련이 있습니까? 번들 테이블이 송장 테이블의 정보를 복제하거나이 두 객체를 조인하는 다른 테이블이 있습니다 (그렇지 않은 경우) –
인보이스가 특정 번들과 관련되어 있는지 식별하는 실제 방법을 추측합니다 번들에 인보이스의 모든 일치하는 part_no 값이 포함되어 있습니까? 현재 쿼리가 수행하는 작업과는 거리가 멀기는하지만. –