mysql 如何用多个where条件连接三个表?

mklgxw1f  于 2023-04-04  发布在  Mysql
关注(0)|答案(1)|浏览(156)

这个问题与我们的班级数据库有关,它要求我们“列出所有在商业大楼有办公室但不在商业大楼授课的教师”。
我的前两个查询正确地找到了那三个在巴士上有办公室的教师,我的最后一个查询自己找到了那些不在商业大楼里教书的人,但是当它们组合在一起时,我希望它能缩小到一个教师,相反,它会产生我的前两个查询语句的结果。
我已经尝试了下面的代码以及多个变体+连接变体,并得到了它产生两个名称,而不是当前的三个,但从来没有只是我所追求的一个。我搜索了一些相关的帖子,并尝试了一些他们的解决方案,但没有一个为我工作。
从原始数据来看,我知道应该填充最终查询的唯一名称是Jerry威廉姆斯(f_id 3),但是,我不知道如何使用两个必要的where子句来确保教师在公共汽车大楼里有他们的办公室,并且他们不在公共汽车大楼里教书。
我认为它应该返回Jerry威廉姆斯,因为我的最后一个where语句包含一个and语句来过滤我正在寻找的结果。相反,它只包含上面查询的结果,其中指出了三个在巴士大楼里有办公室的教师。
教师表数据faculty
位置表数据location
Course_section表数据course_section
下面是我的当前代码(上面包含的数据):[当前mysql脚本][1] [1]:https://i.stack.imgur.com/Uv5Ed.png
选择f_first,f_last from faculty where loc_id in(选择loc_id from location where bldg_code in(选择bldg_code from course_section where(bldg_code =“BUS”)and(loc_id〈〉5 and loc_id〈〉6 and loc_id〈〉7 and loc_id〈〉8)))

jucafojl

jucafojl1#

SELECT f_name, l_name FROM faculty
INNER JOIN location -- Only keep records that match both a faculty & a...
    ON location.loc_id = faculty.loc_id
    AND location.bldg_code = 'BUS' -- ...Business location
WHERE faculty.f_id NOT IN ( -- Only select faculty...
    SELECT f_id FROM course_section
    WHERE course_section.f_id = faculty.f_id -- ...if they do not have a course
    AND course_section.loc_id IN (
        SELECT loc_id FROM location
        WHERE location_loc_id = course_section.loc_id
        AND location.bldg_code = 'BUS' -- ...in the Business building
    )
)

INNER JOIN只保留在业务大楼工作的教员,然后WHERE子句检查……

  • 找不到教师ID
  • 。。。在他们的课程列表中
  • ...在位置中也具有loc_id且业务代码为

未检测。

相关问题