我很难尝试列出所有没有收到特定药物编号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中有我的实际表格结构,但不想把它放在这里。
答案 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) )强>