미입학학생을 조회하려고 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';
위문을 실행하면 입학,미입학 전체가 나오네요.
해결방법 아시는 분 알려주세요.
그런데 아래와 같이 하니까 원하는 결과가 나오는데 델파이에서
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