MySQL에는 두 개의 테이블이 있습니다:
표 1 - 작업 순서
ID | 수량 |
---|---|
1 | 2 |
2 | 1 |
표 2 - ITEMSINWORKORDERS
ID | 작업주문 |
---|---|
1 | 1 |
2 | 1 |
3 | 2 |
질문이 있습니다:
으아악원래는 명령문에서 왼쪽 외부 조인을 사용하고 있었기 때문에 빈 집합을 얻기 위해 내부 조인으로 변경했습니다. 항목이 누락된 작업 주문이 없는 경우 빈 세트를 반환하도록 하려면 어떻게 해야 합니까?
이 쿼리의 목적은 모든 항목이 입력되지 않았고 WORKORDERS 테이블에 입력된 명목 수량이 해당 작업 주문에 해당하는 ITEMSINWORKORDERS 레코드의 수량보다 큰 모든 작업 주문을 찾는 것입니다. 빈 세트가 반환될 것으로 예상했습니다. 그런데 실제로 제가 얻은 것은
ID | NOMINAL_QTY | ENTERED_QTY |
---|---|---|
NULL | NULL | 0 |
원래는 명령문에서 왼쪽 외부 조인을 사용하고 있었기 때문에 빈 집합을 얻기 위해 내부 조인으로 변경했습니다.
추가됨: 이 문제를 해결하기 위해 다음과 같이 NULLIF를 사용해 보았습니다.
으아악하지만 결과는 실망스럽습니다.
ID | NOMINAL_QTY | ENTERED_QTY |
---|---|---|
NULL | NULL | NULL |
귀하의 쿼리가 어떤 행도 반환하지 않기 때문에 무엇을 기대하시는지 모르겠습니다.
하지만 계산 작업을 하려면
GROUP BY
를 사용해야 합니다.db<>fiddle 여기