sql多属性连接
Posted
技术标签:
【中文标题】sql多属性连接【英文标题】:sql multiple attribute join 【发布时间】:2016-04-21 19:14:18 【问题描述】:我正在创建一个关于医疗实践的测试数据库。这是我的er图的图片供参考。 ER diagram
所以基本上我的问题是如何正确地进行连接。我正在尝试提供从给定实践中看到的患者列表(例如实践 id 1),但我也想显示实践名称和详细信息。我还想列出工作或去过该诊所的患者和全科医生的名单(请记住,我的表格中只填充了 10 行测试数据)
到现在为止
select patient.firstname, patient.surname
from patient
Join appointment on patient.patientid = appointment.patientid
where appointment.practiceid IN (1)
ORDER BY firstname;
`我如何还包括与此实践相关的实践详细信息和 gp 详细信息。令我困惑的是,如果它们不是来自患者表,我如何添加更多选择语句。任何帮助都会很棒!
【问题讨论】:
好答案。如果您真的想要一个给定的实践(而不是一组实践),那么更改您的 where 子句是有意义的。使用“其中约会.practiceid = 1”。它更快,只是很好的做法。 OTOH,如果您真的想要一套练习,只需按照答案中的建议进行连接即可。 【参考方案1】:您可以添加更多 join
子句:
SELECT patient.firstname, patient.surname, practice.name, practice.address
FROM patient
JOIN appointment ON patient.patientid = appointment.patientid
JOIN practice ON appointment.practiceid = practice.practiceid
WHERE appointment.practiceid IN (1)
ORDER BY firstname;
【讨论】:
感谢这真的有帮助!【参考方案2】:我喜欢给我的 SQL 语句起别名。节省打字。
SELECT p.firstname, p.surname, pr.Details
FROM patient p
JOIN appointment a ON p.patientid = a.patientid
JOIN Practice pr ON pr.PracticeId = a.PracticeId
WHERE a.practiceid IN (1)
ORDER BY p.firstname;
【讨论】:
非常感谢!这真的很有帮助!【参考方案3】:我已经包含了如何在您的查询中显示Practice_Name
,如果您对您提到的每个其他查询使用相同的连接逻辑方法,您将解决它。我认为这是一种更好的学习方式,而不是在一个答案中解决上述所有问题。
SELECT PR.Practice_Name, P.firstname, P.surname
FROM patient AS P
INNER JOIN appointment AS A ON P.patientid = A.patientid
INNER JOIN Practice AS PR ON A.practiceid = PR.practiceid
WHERE A.practiceid IN (1)
ORDER BY P.firstname;
【讨论】:
以上是关于sql多属性连接的主要内容,如果未能解决你的问题,请参考以下文章
反对 js:无法使用连接表额外属性更新多对多关系。说附加属性无效
Python 多处理错误“ForkAwareLocal”对象没有属性“连接”