Я хочу получить только студентов, которые имеют неприемлемые оценки. Мой оригинальный запрос:
SELECT ssm.STUDENT_ID,COUNT(srcg.GRADE_TITLE) AS POSTED_GRADES
FROM STUDENT_ENROLLMENT ssm, STUDENT_REPORT_CARD_GRADES srcg
WHERE ssm.SYEAR='2010'
AND ssm.SCHOOL_ID='12'
AND ssm.GRADE_ID IN ('140','141','142','143','144','145')
AND srcg.STUDENT_ID=ssm.STUDENT_ID
AND srcg.SYEAR='2010'
AND srcg.SCHOOL_ID='12'
AND srcg.MARKING_PERIOD_ID='434'
AND srcg.GRADE_TITLE IN ('1','2','F','D')
GROUP BY ssm.STUDENT_ID;
но мне плевать на счет; Я только хочу найти студентов, которые имеют плохие оценки. Я пытался альтернативный запрос:
SELECT ssm.STUDENT_ID
FROM STUDENT_ENROLLMENT ssm
WHERE ssm.SYEAR='2010'
AND ssm.SCHOOL_ID='12'
AND ssm.GRADE_ID IN ('140','141','142','143','144','145')
AND EXISTS(SELECT srcg.GRADE_TITLE from STUDENT_REPORT_CARD_GRADES srcg, STUDENT_ENROLLMENT ssm
WHERE srcg.STUDENT_ID=ssm.STUDENT_ID
AND srcg.SYEAR='2010'
AND srcg.SCHOOL_ID='12'
AND srcg.MARKING_PERIOD_ID='434'
AND srcg.GRADE_TITLE IN ('1','2','F','D'));
но возвращает больше записей, так что, очевидно, я делаю что-то не так. Есть ли способ использовать EXISTS, который будет возвращать те же результаты, что и первый запрос, но который более эффективен?