左连接表有两个条件

时间:2014-11-14 16:05:28

标签: mysql join left-join conditional-statements

我需要在两个表之间left join来获取第一个表中的课程,而在第二个表中不存在。但是我也希望在第二张表中选择小于60的课程(即使它存在于两个表中)。

SELECT   offerd_course.id,offerd_course.course_id,
         offerd_course.instructor_name,offerd_course.hour, 
         offerd_course.course_name, 
         offerd_course.day,offerd_course.place,
         offerd_course.type
FROM offerd_course
LEFT JOIN student_course
ON offerd_course.course_id = student_course.course_id 
WHERE  student_course.mark >=60 AND student_course.course_id IS NULL 

怎么办?

2 个答案:

答案 0 :(得分:1)

$query = mysql_query("SELECT offerd_course.id,offerd_course.course_id,offerd_course.instructor_name,offerd_course.hour, offerd_course.course_name, offerd_course.day,offerd_course.place,offerd_course.type
    FROM offerd_course
    LEFT JOIN student_course
    ON offerd_course.course_id = student_course.course_id
    AND student_course.mark >=60
    AND student_course.course_id is NULL

") or die(mysql_error()) ;

答案 1 :(得分:1)

试试这个:

SELECT   offerd_course.id,offerd_course.course_id,
         offerd_course.instructor_name,offerd_course.hour, 
         offerd_course.course_name, 
         offerd_course.day,offerd_course.place,
         offerd_course.type
FROM offerd_course
LEFT JOIN student_course
ON offerd_course.course_id = student_course.course_id 
WHERE  student_course.mark >=60 AND student_course.course_id IS NULL
UNION
SELECT   offerd_course.id,offerd_course.course_id,
         offerd_course.instructor_name,offerd_course.hour, 
         offerd_course.course_name, 
         offerd_course.day,offerd_course.place,
         offerd_course.type
FROM offerd_course
 JOIN student_course
ON offerd_course.course_id = student_course.course_id 
WHERE  student_course.mark < 60