SELECT A.FILENO, B.ITEM, A.DESIGN,B.UNIT,A.COLORNO,A.GSUSER, C.USNAME, D.COLORNAME,D.COLORQTY, A.BULCODE, SUM(TQTY) TQTY, E.BULDES FROM BARMST A, ORDFILE B , USERCODE C , ORDCOLOR D , BULCODE E WHERE A.GSDATE = '29-Apr-2000' AND A.GSGUBUN = '01' AND A.GSUSER = C.USCODE AND A.FILENO = D.FILENO AND A.DESIGN = D.DESIGN AND A.COLORNO = D.COLORNO AND A.BULCODE = E.BULCODE AND A.FILENO = B.FILENO GROUP BY A.FILENO, B.ITEM, A.DESIGN,A.COLORNO,D.COLORNAME,A.GSUSER,C.USNAME,B.UNIT,D.COLORQTY,A.BULCODE,E.BULDES ORDER BY A.FILENO, B.ITEM, A.DESIGN,A.COLORNO,D.COLORNAME,A.GSUSER,C.USNAME,B.UNIT,D.COLORQTY,A.BULCODE,E.BULDES
위와 같이 sql을 작성하였읍니다...
문제는 A.DESIGN = D.DESIGN 에서가 문제 입니다...
문제는 두개의 테이블의 Design 필드에 값이 있으면 조인이 되어 선택되어 지는데
값이 아예 null이 선택이 되어지지 않는군요...
그래서 간단히 다음과 같이 테스트 삼아 sql를 만들어 보았도 되지 않는군요...
select * from BARMST where FILENO = '019120A01' and Design = null ;
select * from BARMST where FILENO = '019120A01' and Design = '' ;
DB는 오라클이고요.....
아시는 분은 도움좀 주세요....
> SELECT A.FILENO, B.ITEM, A.DESIGN,B.UNIT,A.COLORNO,A.GSUSER, C.USNAME, D.COLORNAME,D.COLORQTY, A.BULCODE, SUM(TQTY) TQTY, E.BULDES FROM BARMST A, ORDFILE B , USERCODE C , ORDCOLOR D , BULCODE E WHERE A.GSDATE = '29-Apr-2000' AND A.GSGUBUN = '01' AND A.GSUSER = C.USCODE AND A.FILENO = D.FILENO AND A.DESIGN = D.DESIGN AND A.COLORNO = D.COLORNO AND A.BULCODE = E.BULCODE AND A.FILENO = B.FILENO GROUP BY A.FILENO, B.ITEM, A.DESIGN,A.COLORNO,D.COLORNAME,A.GSUSER,C.USNAME,B.UNIT,D.COLORQTY,A.BULCODE,E.BULDES ORDER BY A.FILENO, B.ITEM, A.DESIGN,A.COLORNO,D.COLORNAME,A.GSUSER,C.USNAME,B.UNIT,D.COLORQTY,A.BULCODE,E.BULDES
>
> 위와 같이 sql을 작성하였읍니다...
> 문제는 A.DESIGN = D.DESIGN 에서가 문제 입니다...
> 문제는 두개의 테이블의 Design 필드에 값이 있으면 조인이 되어 선택되어 지는데
> 값이 아예 null이 선택이 되어지지 않는군요...
>
> 그래서 간단히 다음과 같이 테스트 삼아 sql를 만들어 보았도 되지 않는군요...
> select * from BARMST where FILENO = '019120A01' and Design = null ;
> select * from BARMST where FILENO = '019120A01' and Design = '' ;
>
> DB는 오라클이고요.....
> 아시는 분은 도움좀 주세요....
>
null 값의 checking은 =, <> 연산자가 아니고 is null, in not null 로 하는 것입니다.
그리고 null 값은 space 도 아닌 값 자체가 없다는 뜻이며 위 내용을 보니 query에서
join 시에 null value 도 조인하려는 경우 같은데 이럴때는 outer join을 사용해야 합니다. 결국 null value 을 가진 테이블에 (+) 연산자를 주어야 합니다. 예를 들어 테이블 a 의 a column 값과 b테이블의 b column을 조인하려고 하고 b column에 null 값이 있다면 조인시에
where a.a = b.b(+) 하시면 되지 않을까....