【问题标题】:SQL Stored Procedure to join three tablesSQL存储过程连接三个表
【发布时间】:2021-06-21 21:19:41
【问题描述】:

我目前正在尝试用 SQL 编写一个存储过程,该过程将从三个表中提取数据。

PerformOrder - AppointmentID, PatientID, ImagingOrderID
ImagingOrder - ImagingOrderID, PatientID, PhysicianID
ImagingEquipment - EquipmentID

PerformOrder 连接到imagingorder 和imagingequipment 但imagingorder 和imagingequipment 不相互连接

我希望在运行查询时显示约会 ID、患者 ID、成像订单 ID、医师 ID 和设备 ID。

我对 SQL 完全陌生,非常迷茫。任何帮助将不胜感激!


编辑:

这是我的存储过程,但我收到一条错误消息

“程序或函数 'up_AppointmentInvoice2' 需要参数 '@PatientID',但未提供该参数。”当我尝试执行它时

CREATE PROCEDURE up_AppointmentInvoice2


--Receive Parameters 
@PatientID int,
@AppointmentID int,
@EquipmentTypeID int,
@ImagingOrderID int,
@PhysicianID int


AS


--Generate the list
SELECT i.PatientID, p.AppointmentID, p. EquipmentID, i.ImagingOrderID, i.PhysicianID
FROM ImagingOrder i INNER JOIN PerformOrder p
  ON i.ImagingOrderID = p.ImagingOrderID

【问题讨论】:

  • 为什么要存储过程?
  • @ysth 这样我以后就可以检索这些数据而不必再次全部输入。

标签: mysql sql stored-procedures sqldatatypes


【解决方案1】:

您可以从加入表 PerformOrder 和 ImagingOrder 中获得约会 ID、患者 ID、成像订单 ID 和医师 ID,如下所示。但是 ImagingEquipment 和其他两个表之间没有联系。

select p.appointmentID, i.patieintID, i.imagingorderID, i.physicianID, p.EquipmentID
from PerformOrder p
inner join ImagingOrder i on i.ImagingOrderID=p.ImagingOrderID

【讨论】:

  • 对不起!我不小心把它遗漏了 PerformOrder 也有 EquipmentID 所以有一个链接。那我该怎么办呢?
  • 我已经改变了我的答案。您可以从 PerformOrder 表中获得 EquipmentID。完全不需要加入 ImagingEquipment
  • 非常感谢您的帮助!还有一个问题,如果您不介意,当我运行存储过程时,它给了我这个错误“过程或函数'up_AppointmentInvoice'需要参数'@PatientID',它没有提供。”你知道为什么吗?
  • 可以分享一下你写的过程吗?
  • 我已将其包含在我的原始帖子中
猜你喜欢
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多