Reputation: 31
I have these tables
student_record grades courses
---------------- ---------------------- ---------------------
ID grade course_no letter points course_no code CRD
---------------- ---------------------- ---------------------
2255 A+ 1 A+ 4 1 COE200 4
2255 B+ 2 B+ 3.5 2 COE305 3
2255 NP 3 NP 0 3 COE400 4
2255 NF 4 NF 0 4 COE405 3
the I wrote this query
SELECT
student_record.id,
SUM(courses.crd * grades.points) AS sum_grade_credits
FROM grades
INNER JOIN student_record ON grades.letter = student_record.grade
INNER JOIN courses ON courses.course_no = student_record.course_no
WHERE student_record.id=2255;
how I can let this query do not retrieve data when it see (NP or NF) ?
I mean at (NP or NF)situation the query do not do any operations?
Upvotes: 0
Views: 31
Reputation: 133360
You can use the in clause in where clause
SELECT
student_record.id,
SUM(courses.crd * grades.points) AS sum_grade_credits
FROM grades
INNER JOIN student_record ON grades.letter = student_record.grade
INNER JOIN courses ON courses.course_no = student_record.course_no
WHERE student_record.id=2255
AND student_record.grade not in ('NP', 'NF');
or you can use in join condition
SELECT
student_record.id,
SUM(courses.crd * grades.points) AS sum_grade_credits
FROM grades
INNER JOIN student_record ON (grades.letter = student_record.grade
and student_record.grade not in ( 'NP', 'NF'))
INNER JOIN courses ON courses.course_no = student_record.course_no
WHERE student_record.id=2255;
Upvotes: 1