SQL查询在组合三个表时获取其他表中不应存在的数据行

时间:2017-02-03 06:29:43

标签: mysql sql

提前感谢大家。其实我使用的是mysql数据库。我有三个课程,考试和价格。我在比较课程,考试和价格表时需要一行数据,其中在传递课程表ID时,考试表中不应存在价格表的数据,这个$ courseId我从循环中传递。

我编写了一个像这样的SQL查询

select e.*, cs.* FROM exams e 
left join courses cs on e.course_id = cs.id 
left join prices p on e.course_id = p.course_id 
where cs.id = '$courseId' AND p.course_id IS NULL

但它没有用。请有人指导我。

课程

id | name
1  | ITIL Foundation
2  | PMP
3  | CAPM

考试

 id     username    course_id
 1      58            1
 2      58            2
 3      58            3

价格

 id     userid  course_id   price
  1     58         1        10
  2     58         2        20

我需要一个"考试"像这样的表格

考试

id  username    course_id
1       58            3

1 个答案:

答案 0 :(得分:-1)

尝试编写子查询以从price表中获取course_id的值,然后在(子查询)中添加条件course_id。

select e.*,cs.* from exams as e
left join courses as cs on e.course_id=cs.id
and where course_id not in (select course_id from prices);

我认为这会奏效。我只是一个初学者。如果错了,请原谅我。