2013-05-07 64 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