有两个条件的左连接表
问题描述:
我需要两个表之间的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
怎么办?
答
试试这个:
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
答
$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()) ;
请,或不使用'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
感谢您的建议 – mazaj 2014-11-14 16:17:06