使用此关系架构,患者ID和员工ID是外键,其中id.staff
和pid.patient
是唯一键:
staff(ID, fname, lname, role)
patient(pID, pFname, pLname, bdate, address, phone)
appointment(aptID, patientID, staffID, aptDate, aptTime)
procedures(procNum, pName, price)
aptDetail(aptID, procNo)
所以说如果我想列出与特定工作人员约会的患者姓名,即John Smith,我该如何明确地做到这一点?
我已经隐式管理了,但我知道这有点令人不悦,但我无法使用WHERE
语句来达到它。
任何帮助都会受到赞赏,任何时候我尝试使用INNER JOIN
如果它不是一个简单的连接,我似乎会碰壁。
答案 0 :(得分:2)
这是您正在寻找的查询类型吗?
select distinct pFname, pLname
from patient p
join appointment a on p.pID = a.patientID
join staff s on a.staffID = s.ID
where s.fname = 'John' and s.lname = 'Smith'
答案 1 :(得分:1)
您可以使用内部联接
select
a.pID
, a.pFname
, a.pLname
, a.bdate
, a.address
, a.phone
, b.aptDate
, b.aptTime
, c.fname
, c.lname
, c.role
from patient a
INNER JOIN appointment b on b.patientID = a.pID
INNER JOIN staff c on b.staffID = c.ID on concat(fname, ' ', lname ) ='John Smith'
答案 2 :(得分:1)
以下内容应该可以正常工作:
SELECT p.*
FROM appointment AS a
INNER JOIN staff AS s ON a.staffID = s.pID
INNER JOIN patient AS p ON a.patientID = p.pID
WHERE s.ID = <yourstaffid>;
答案 3 :(得分:0)
(a, b)