有两个条件的左连接表

问题描述:

我需要两个表之间的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 

怎么办?

+3

请,或不使用'mysql_ *'功能(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use- mysql-functions-in-php),它们不再被维护并且[正式被弃用](https://wiki.php.net/rfc/mysql_deprecation)。学习[准备的语句](http://en.wikipedia.org/wiki/Prepared_statement),并使用[PDO](http://us1.php.net/pdo)或[MySQLi](http:// us1.php.net/mysqli)。 – 2014-11-14 16:06:55

+0

感谢您的建议 – mazaj 2014-11-14 16:17:06

试试这个:

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 
+0

它正在工作,非常感谢。 – mazaj 2014-11-14 16:32:39

+0

upvote if it usefull @mazaj ..:P – Karunakar 2014-11-14 16:33:19

+0

我试过了,但是网站上说要投15票!@Karunakar ..:p – mazaj 2014-11-14 16:36:16

$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虽然这也有助于解释为什么将标准移至连接工作。 – xQbert 2014-11-14 16:12:20

+0

没有工作... – mazaj 2014-11-14 16:16:18