Sql 合并两个不相关的表

Sql 合并两个不相关的表,sql,tsql,Sql,Tsql,我从来没有这样做过,它只是为了在asp.net中的gridview控件上显示信息 以下是我所拥有的: SELECT [VisitNumber], [Date], [DateFreq], [Weight], [Fat], [BloodPressure], [Pulse], [Total], [Discount], [NetTotal], [AmountPaid], [PaymentStatus], [TypeOfPayment], [Comments] FROM [tblVisits] WHERE

我从来没有这样做过,它只是为了在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不是很在行,所以如果有任何想法,我将不胜感激。

看来您希望通过patientID加入某种sql

  • 如果您只想包含两个表中ID均为的记录,请使用
    内部联接
  • 如果您想要所有记录,如果
    null
    s中的ID在一个表中,而不是在另一个表中,请使用
    full outer join
  • 如果您想要一个表中的所有记录,而另一个表没有该ID,则使用
    left
    right outer 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;

根据您的评论,您正试图根据就诊当天的处方将药物加入就诊。在这种情况下,您需要加入该信息:

SELECT [tblVisits].[VisitNumber], [tblVisits].[Date], ..., [tblVisits].[Comments],
       [tblMedications].[DatePrescribed], ..., [tblMedications].[Expires], [tblMedications].[Lot]
FROM [tblVisits]
JOIN [tblMedications] ON [tblVisits].[PatientID] = [tblMedications].[PatientID]
                     AND [tblVisits].[Date] = [tblMedications].[DatePrescribed]
WHERE [tblVisits].[PatientID] = '16'
ORDER BY [tblVisits].[Date]

我想提一下,我认为说这两个表“不相关”不是最好的说法。基于日期,他们对你的申请有着有意义的关系;它不是以外键的形式明确的,因为它不是基于键的关系。

您能详细说明一下“组合”是什么意思吗?您对输出或示例输出的期望可能足以说明问题。我只想将这两个查询的每一列显示在一个gridview中。假设一个患者可以进行多次就诊和多次用药,您不能根据患者ID将这两个查询合并到一个结果集中。如果您仅根据患者ID加入,则最终将产生重复的行。如果有一种方法可以将个人就诊与药物相关联,那么您也需要使用该方法,否则您将不得不为每个查询提供单独的结果集。@jpmc26,我想显示每个患者就诊,以及在同一日期向同一患者开出的每种药物。对不起。由于我的理解发生了变化,我一直在删除我的评论。那么,您是否希望有许多日期不同的药物行?您当前的查询似乎将药物限制在最近的日期。你不是在试图根据日期来匹配药物治疗,是吗?