Q&A

  • mssql outer join 관련 도움 요청
미입학학생을 조회하려고 MSSQL Enterprise Manager에서는 실행되는데

SELECT   a.*, b.class_id AS class_id
FROM      dbo.student a LEFT OUTER JOIN
                dbo.class_student b ON a.id = b.student_id
WHERE   (a.ams_id = 2) AND (b.class_id IS NULL)
ORDER BY a.name
으로 변환되어 제대로 나옵니다.

하지만 델파이 속에서는 결과가 나오지 않습니다.

Sql.Text:='select a.*,b.class_id as class_id from student,class_student b'
      + ' where a.ams_id =2'
      + '   and a.id *= b.student_id and b.class_id is NULL'
      + ' order by a.name';
위문을 실행하면 입학,미입학 전체가 나오네요.

해결방법 아시는 분 알려주세요.
2  COMMENTS
  • Profile
    신철우 2004.04.02 22:22
    ParamByName('W').ISNULL := TRUE; 으로 해봐도 역시 안되네요.

    그런데 아래와 같이 하니까 원하는 결과가 나오는데 델파이에서
    mssql DB엔진으로 전달되는데 outer join 버그가 아닌가 모르겠네요.
    (inner join은 잘되지만)

    [정답]
    Sql.Text:='select a.* from student a LEFT OUTER JOIN'
            + '   class_student b ON a.id = b.student_id'
            + ' where a.ams_id =2 and b.class_id IS NULL'
            + ' order by a.name


  • Profile
    [勳]후니 2004.04.02 20:11
    ParamByName 로 값을 넘겨 주는 방법으로

    해보시는 건 어떨넌지..

    사용해보진 않았지만...

    ParamByName('W').ISNULL := TRUE;

    이런게 이값이 NULL값이라고 넘겨 줄수 있습니다.

    SQL 문장에서 NULL로 보내면.. 엔진이 NULL값으로 넘겨주지

    모사는 것 같습니다.

    테스트를 해보지 못해서.... 확실한 답이 될런진 모르겠네요...