2013-05-07 70 views
0

我從來沒有這樣做過,它只是爲了在asp.net中顯示gridview控件的信息。結合兩個不相關的表

以下是我有:

SELECT [VisitNumber], [Date], [DateFreq], [Weight], [Fat], [BloodPressure], [Pulse], [Total], [Discount], [NetTotal], [AmountPaid], [PaymentStatus], [TypeOfPayment], [Comments] FROM [tblVisits] WHERE ([PatientID] = '16') 

SELECT [DatePrescribed], [AdditionalSupply], [Medication], [Dose], [Quantity], [Type], [Description], [Expires], [Lot] FROM [tblMedications] WHERE (([PatientID] = '16') AND ([DatePrescribed] = (select top 1 dateprescribed from tblMedications where ([PatientID] = '16') order by DatePrescribed desc))) ORDER BY [DatePrescribed] DESC 

有什麼辦法來組合它們,也許一個完整的PatientID加入?我不是很擅長sql,所以任何想法,將不勝感激。

+0

你能詳細說明你的意思是「結合」嗎?您對輸出或樣本輸出的期望可能足以說明問題。 – jpmc26 2013-05-07 23:29:20

+0

我想要做的就是將這兩個查詢的每一列都顯示在一個gridview中。 – prospector 2013-05-07 23:38:20

+0

假設患者可以有多次就診和多種藥物治療,則無法將這兩種查詢組合爲基於患者ID的一個結果集。如果您加入患者ID,則只會出現重複行。如果有將個人訪問與藥物相關聯的方法,那麼您也需要使用該方法,否則每個查詢都必須有單獨的結果集。 – Nathan 2013-05-07 23:52:50

回答

0

根據你的意見,你想加入的藥物來探訪基於訪問當天規定的藥物。在這種情況下,你需要加入這些信息:

我想提一提,我認爲說,這兩個表是「無關」是不是把它的最好辦法。基於日期,他們確實對您的申請有意義的關係;它不是以外鍵的形式顯式的,因爲它不是基於鍵的關係。

0

看來你想要某種SQL加入patientID

  • 如果您只想包含兩個表中的ID的記錄,請使用inner join
  • 如果您想要所有的記錄,並且null s其中一個ID在一個表中但不是另一個,請使用full outer join
  • 如果您想要從一個表中獲取所有記錄,並使用null(其中另一個表沒有該ID),請使用leftright outer join

它似乎最有可能,你會想要一個inner join,這樣的事情:

select v.VisitNumber, v.Date, ..., v.Comments, m.DatePrescribed, m.AdditionalSupply... 
from tblVisits as v inner join tblMedication as m 
on v.PatientID = m.PatientID; 

Source