2017-11-25 10 views
1

아래 표를 확인하십시오.SQL- 테이블에 가입하는 방법과 이러한 null 값에 대해 특히 조인 된 테이블에서 하나의 항목을 사용합니까?

표 1이 배 ItemName에 표 2를 조인하고 배와 오렌지에 대해 Coef 열은 null이됩니다. ItemName = 기타 표 2의에 대해 일치하지 않는 항목을 어떻게 얻을 수 있습니까?

현재, 내가 그 널 항목을 필터링하기 위해 임시 테이블을 사용하고,이를 달성하기 위해 더 나은 방법이 최종 표 3

를 얻기 위해 매핑 항목의 결과로 올바른 COEF하고 노동 조합을 넣어?

표 1 :

ItemName | Cost | 
Apple  | 1  | 
Banana | 2  | 
Pear  | 3  | 
Orange | 4  | 

표 2 :

ItemName | Coef | 
Apple  | 0.1 | 
Banana | 0.2 | 
Others | 0.8 | 

예상 결과 : 당신은 cross join이 단일 행과의 결과와 첫 번째 null이 아닌 걸릴 수

ItemName | Cost | Coef | 
Apple  | 1  | 0.1 | 
Banana | 2  | 0.2 | 
Pear  | 3  | 0.8 | 
Orange | 4  | 0.8 | 
+0

어떤 데이터베이스 당신이 정말로 사용하여 MySQL의 또는 SQL Server입니까? 핵심으로 태그하십시오 –

답변

3

값 :

,210
SELECT  t1.itemname, t1.cost, COALESCE(t2.coef, def.coef) 
FROM  t1 
LEFT JOIN t2 ON t1.itemname = t2.itemname 
CROSS JOIN (SELECT coef 
      FROM t2 
      WHERE itemname = 'Others') def 
+0

부 철자 :'itername' =>'itemname' – tonypdmtr

+0

@tonypdmtr이 (가) 고쳐졌습니다. 고지를 보내 주셔서 감사합니다. – Mureinik

+0

잘됩니다! Thx – Spencer

3

당신이 왼쪽을 사용할 수 있습니다 조인 :

select t1.*, 
     coalesce(t2.coef, t2o.coef) as coef 
from t1 left join 
    t2 
    on t1.itemname = t2.itemname left join 
    t2 t2o 
    on t2o.itemname = 'Others'; 
+0

부 철자법 :''others'' =>''기타 '' – tonypdmtr

+0

잘됩니다! 고마워 – Spencer