2013-02-23 75 views
1

我有一張名爲Doctor的表格。從2個不同的表格中選擇值

醫生表由4個字段組成。 DoctorID,DoctorName, DoctorAddress, DoctorSpeciality

我有另一個名爲PatientData的表。它有4個領域。 PatientId, PatientName, PatientTelephone, DoctorID

我需要編寫一個SQL來顯示下列字段;

PatientID, PatientName, DoctorName, DoctorSpeciality 

1)我想,我會在這裏使用的INNER JOIN,但我不知道怎麼寫了這個場景。一個outer join也會工作,我猜,但我是Joins新。有人可以幫我嗎?

2.)我可以爲我在上面創建的SQL聲明創建一個VIEW嗎?

+1

視圖您可能需要重新考慮您的設計,以便在患者和醫生之間建立多對多的關係。 – 2013-02-23 21:55:23

+0

這是丹的好建議。考慮到這一點,醫生可以有很多患者,患者可以有很多醫生,醫生可以有多種專科,患者可以有多名具有相同專科的醫生或多名具有多種專科的醫生。他們都應該使用關係表來加入他們自己的數據庫表中。當您查詢患者時,您可以查看關係表並抓住他/她的所有醫生,然後抓住該醫生的特色,等等。 – 2013-02-23 23:24:52

+0

我的示例中有一點極端,以幫助顯示場景,但如果數據是1-1,或者您只有幾個靜態值,則可以輕鬆地將特色作爲醫生的屬性存儲。 – 2013-02-23 23:48:07

回答

2

這樣的事情應該會使用常規INNER JOIN - 這將返回從醫生表中的所有記錄與在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

這是一個簡單的加入

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 
相關問題