从2个不同的表中选择值

时间:2013-02-23 21:47:26

标签: sql sql-server

我有一张名为Doctor的表。

医生表由4个字段组成。 DoctorID,DoctorName, DoctorAddress, DoctorSpeciality

我有另一张叫做PatientData的桌子。它有4个字段。 PatientId, PatientName, PatientTelephone, DoctorID

我需要编写一个显示以下字段的SQL;

PatientID, PatientName, DoctorName, DoctorSpeciality

1。)我想,我将不得不在这里使用INNER JOIN,但我不确定如何为此场景编写它。我猜outer join也会有用,但我是Joins新手。有人可以帮我吗?

2.。)我可以为上面创建的VIEW语句创建SQL吗?

2 个答案:

答案 0 :(得分:2)

这样的事情应该使用常规的INNER JOIN - 这将返回Doctor表中的所有记录以及PatientData表中的匹配记录:

SELECT PD.PatientId, PD.PatientName, D.DoctorName, D.DoctorSpecialty
FROM Doctor D
   INNER JOIN PatientData PD ON D.DoctorId = PD.DoctorId

如果您想要返回其他表中的所有数据,请使用OUTER JOIN(我更喜欢LEFT JOINs)。

这是一篇关于联接的可视化表示的好文章:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

是的,如果您愿意,可以创建一个视图 - 取决于您的需求。这样的事情应该很接近:

CREATE VIEW DoctorPatients AS
SELECT PD.PatientId, PD.PatientName, D.DoctorName, D.DoctorSpecialty
FROM Doctor D
   INNER JOIN PatientData PD ON D.DoctorId = PD.DoctorId

SQL Server视图:http://msdn.microsoft.com/en-us/library/ms187956.aspx

答案 1 :(得分:1)

这是一个简单的连接

SELECT p.PatientID, p.PatientName, d.DoctorName, d.DoctorSpeciality
FROM PatientData p JOIN Doctor d on d.DoctorID = p.PatientID

当然你可以从这个

创建一个视图
   CREATE VIEW [dbo].[PatientAndDoctor]
   AS
      SELECT p.PatientID, p.PatientName, d.DoctorName, d.DoctorSpeciality
      FROM PatientData p JOIN Doctor d on d.DoctorID = p.PatientID