左连接/ UNION 4表指定列 - Oracle

时间:2017-03-19 02:46:31

标签: sql database join

我很难尝试列出所有没有收到特定药物编号100的人。我还需要部门的名称和人员床名。

我的表格是:

1.人(身份证,姓名)

2.医学(ID,名称,剂量)

3.Occupied(人员ID FK,部门ID FK,BED ID FK)

4.Dept(部门ID,部门名称)

5.Perscription(人ID FK,医学ID FK,单位)

6.Bed(部门ID FK,床位ID)

我正在考虑使用左联盟和联盟,但我很难过......有人可以帮忙吗?

我在PDF中有我的实际表格结构,但不想把它放在这里。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的事情(这假设"具体的药物编号100"是FK药物ID而不是药物的名称):

select department.name, bed.id
from people, 
       occupied,
       dept,
       bed
where  occupied.peopleid = people.id
    and occupied.deptid = dept.deptid
    and occupied.bedid = bed.bedid
    and people.id not in (
select people.id
from   people,
       prescription
where   prescription.peopleid = people.id
    and prescription.medicineid = 100
);

另外,我认为很多人感到困惑,因为你使用的是Union这个术语。没有" Union"在这个查询中,只是加入。

希望这有帮助!

答案 1 :(得分:0)

我在Oracle中没有工作,但一般的SQL查询是

从占用的人员ID中选择人员ID FK,部门ID FK,BED ID FK.people ID =(从处方中选择人员ID不在的唯一人员ID(从处方中选择医疗ID = 100的人员ID) )