2014-04-15 2 views
0

저는 SQL 초보자이며 QUALITY 테이블의 5 개 열을 모두 나열하는 SQL 쿼리를 구성하고 두 개의 열을 더 추가해야합니다 : 일괄 처리에서 생성 된 항목의 ProductCode 및 포함 된 BatchQuality 파생 열 일괄 처리 품질이 좋지 않은 경우 (불량품이 1 개 이상 포함) "그렇지 않으면"불량입니다.파생 된 열 결과

생산 테이블 (serialno, batchno 및 productcode 포함), 품질 테이블 (batchno, test1, test2, teste3, test4) 및 defectid 테이블 (defectiveid , 일련 번호). 이 좋은 또는 불량 인 경우라고 batchquality라는 마지막 열을 얻는 방법에

select q.batchno, q.test1, q.test2, q.test3, q.test4, p.productcode_id 
from production p, defective d, quality q 
where d.serialno = p.serialno 
and p.batchno = q.batchno; 

어떤 아이디어 :

나는 다음과 같은 사용하여 7 열 중 6을 얻을 수 있어요? 나는 카운트 기능이 필요하다고 생각하지만, 일단 그렇게되면, 나쁘거나 좋다고 표현할 수있는 새로운 컬럼을 얻는 방법에 대해 어떻게 생각합니까? 제공 할 수있는 도움을 주시면 감사하겠습니다.

+2

안녕하세요. 테이블 스키마와 일부 샘플 데이터를 표시하는 것이 더 도움이됩니다. – OldProgrammer

답변

0

현재 쿼리는 where 절에 구형의 오래된 암시 적 조인을 사용하는 내부 조인입니다. 나는 제품이 인 행에만 defective 테이블에 결함이 있다고 가정하면이 있다고 가정합니다. 내부 조인은 결함이있는 부품 만 반환하며 결함이없는 부품은 반환하지 않습니다. 이를 위해서는 외부 조인이 필요합니다. 또 다른 이유는 오래된 암시 적 조인 도랑 및 명시 적 JOIN 연산자를 사용 :

select q.batchno, q.test1, q.test2, q.test3, q.test4, p.productcode_id 
from production p 
    JOIN quality q ON p.batchno = q.batchno; 
    LEFT JOIN defective d ON d.serialno = p.serialno 

하지 결함을 가지고 할 제품의 경우을의 defective 테이블에서 열의 값은 null이됩니다. 조인의 위의 문은 그러나에서 각 행을 반복됩니다

select q.batchno, q.test1, q.test2, q.test3, q.test4, p.productcode_id, 
     case 
      when d.serialno is null then 'good' 
      else 'bad' 
     as batch_quality 
from production p 
    JOIN quality q ON p.batchno = q.batchno; 
    LEFT JOIN defective d ON d.serialno = p.serialno 

인해 성격 : 제품이 있었다면 그래서 플래그를 얻기 위해하는 것은 "좋은"또는 "나쁜"당신은 값이 null의 경우 확인해야 qualitydefective 테이블의 각 행에 대한 생산 테이블. 네가 원한다면 나에게 명확하지 않다.