SQL은 상당히 쉬운 언어입니다.
더구나 자연어라서 영어만 할줄알면 컴퓨터에 기초가 부족해도 습득이 가능할정도 쉽습니다.
하지만 역시나 언어이고 컴퓨터를 다루는 툴이다 보니 약간의 한계가 있습니다.
그중에 몇가지가 호환성,NULL, 문자열, 날짜등 입니다.
호환성은 비록 표준 SQL을 사용한다 하더라도 데이터베이스에 따라서 동작이 조금씩 달라 진다는겁니다.
NULL은 필드값이 널일 경우 비교가 불가능하다는겁니다. 따라서 NOT NULL같은 DB가 제공하는 예약어를 찾아야 합니다.
문자열은 대등 비교에서 =가 올바르게 동작하지 않는다는 겁니다. DB에 따라서 LIKE를 대신 사용하여야 합니다.
날짜도 날짜상수의 경우 #날짜#로 표시 해야 합니다.
이외에도 상당한 문제가 있고 지금까지 제가 드린조언도 DB에 따라서 달라지는 부분이 많습니다.
그때는 할수 없이 해당 DB전문가에게 도움을 청하셔야 합니다. 달리 방법이 없습니다.
그럼
델피언 님이 쓰신 글 :
: Select a.item_code, a.item_name, a.in_num-Nullif(sum(b.out_num),0) as Remain_Num
: From Product a left outer join Sale b
: on a.seq = b.Product_seq
: and a.item_name = 'jjj'
: group by a.item_code, a.item_name
:
: 이렇게 하면 값은 나옵니다...
:
: 그런데 and a.item_name = 'jjj' <- 이부분이 전혀 영향을 받지 않습니다.
:
: 무슨 말이냐면 and a.item_name = 'jjj' 빼고 sql을 돌려도 레코드가 100개이고..
: and a.item_name = 'jjj' 넣고 돌려도 똑같이 레코드가 100개가 나옵니다.....
: 물론 jjj 는 한개밖에 없는데 말입니다..ㅠㅠ
:
: 미치겠습니다.. ㅠㅠ
|