2017-12-14 7 views
0

이 쿼리를 조합 한 결과 홀수가 ITEMSLINES이 아닌 LINES의 전체 수량을 반환하는 이유를 알기 위해 고심하고 있습니다. 예 : 지금은 LINES이고 COMPLETEDTrue입니다. 그 중 하나는 ITEMS의 홀수이고 그 중 하나는 ITEMS의 짝수입니다. 그러나 쿼리는 내 조건에도 불구하고 2를 반환합니다. 내 검색어에 무슨 문제가 있습니까?조건부 모듈을 사용하는 SQL 하위 쿼리

SET @linesCompleted = (SELECT Count([so_line_number]) AS LINES 
         FROM [aof_order_line_queue] 
         WHERE [completed] = 'True' 
           AND (SELECT Count([serial_number]) AS ITEMS 
            FROM [aof_order_items] 
            WHERE so_line_number IN (SELECT 
              [so_line_number] 
                  FROM 
              [aof_boxes_lines] 
                  WHERE 
              [aof_boxes_id] = 880)) % 2 = 1) 

여기서 목표는 홀수 인 상자에 포함 된 LINES의 수량을 계산하는 것입니다.

IN 하위 쿼리는 두 결과를 반환 할 수 있지만 한 결과는 홀수이어야하고 한 결과는 짝수이어야한다고 생각됩니다.

+0

하위 쿼리가 외부 쿼리와 상관되는 부분은 어디에 있습니까? –

+0

@CaiusJard 귀하의 질문을 이해할 수 있는지 잘 모르겠습니다. 이것은 전체 쿼리입니다. – Jaberwocky

+1

계산을 수행하는 쿼리 (홀수로 나타남)가 resut가 이상한지를 알고 싶은 외부 쿼리에 어떻게 링크되는지 알 수 없습니다. 예'SELECT * FROM person p WHERE EXISTS (SELECT null FROM exam where student_name = p.name)'내부 쿼리에 외부 쿼리와 비교되는 데이터가 있기 때문에 두 쿼리가 함께 연결됩니다.이 링크가 없으면 결과가 표시되지 않습니다. 기대하시는 것 - 당신의 질문을 함께 연결시키는 것? –

답변

1

문제는 내부 쿼리에 대한 외부 쿼리에서 상관 관계가 부족하다는 것입니다.

aof_order_line_queue에있는 행 수를 계산하도록 요청할 것입니다. 여기서 (행과 관련이없는) 값이 참입니다. 따라서 괄호 안의 내용은 각 행이 아닌 전체 데이터 세트에 대해 true 또는 false 중 하나입니다. 그것이 사실이라면, 모든 라인을 계산합니다. 그것은 거짓 경우, 당신은 당신의 내면의 쿼리에

AND aof_order_items.queue_id = aof_order_line_queue.queue_id 

같은 것을 추가해야 0

반환합니다.

+0

각'SERIAL_NUMBER'는 연관된'SO_LINE_NUMBER'를 가지고 있습니다. 각 상자는 여러 개의 'SO_LINE_NUMBER'를 가질 수 있습니다. 난 상자에 존재하는 각각에 대해'SO_LINE_NUMBER '을 세고 싶고, 홀수 번호의'SERIAL_NUMBER'가 발생했다. – Jaberwocky

+0

하나님, JIM, POST 몇개의 샘플 데이터와 기대되는 결과에 대한 사랑 때문에 우리는 똥을 닦으 려하지 않고 작동하는 질의를 쓸 수 있습니다 :) –