【问题标题】:left join table with two conditions具有两个条件的左连接表
【发布时间】:2015-01-12 02:05:18
【问题描述】:

我需要在两张桌子之间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 

怎么办?

【问题讨论】:

标签: mysql join left-join conditional-statements


【解决方案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

【讨论】:

  • 我试过了,但网站说投票需要 15 声望 @Karunakar..:p
【解决方案2】:
$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 虽然这也有助于解释为什么将条件移动到联接有效。
猜你喜欢
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
相关资源
最近更新 更多