【发布时间】:2011-05-06 11:14:54
【问题描述】:
一个新项目需要我们设置两台服务器来接受请求。最初,我们有一个报告系统,它查询数据库并将各种详细信息返回给用户。我们现在显然需要查询不同服务器上的两个数据库并合并这些信息以提供实时报告。
我的计划是分别查询两个数据库并将这些值写入数据表(这将始终具有相同的列,因为两个数据库的设计相同)然后尝试合并这两个数据表,然后将其数据绑定到网格视图。我让它工作到一定程度,但不知道下一步该做什么......查询一切正常,我能够将两组 sql 查询拉到单独的数据表中,我不知道该怎么做是合并这些以便添加任何数据(例如同一日期)以提供两台服务器的总数,并且如果一个数据库上存在日期但另一个数据库上不存在日期,则仍应显示...我希望这很清楚够了。
当我使用这个时:
tblBreakdownA.Merge(tblBreakdownB, False, MissingSchemaAction.Add)
GridViewBreakDown.DataSource = tblBreakdownA
GridViewBreakDown.DataBind()
这两个数据表确实合并了,但是第二个数据表只是简单地合并到第一个数据表之下,所以我最终得到了一些重复但持有不同值的日期,即
数据库 1
1 月 1 日 - 10 次点击
1 月 3 日 - 15 次点击
1 月 4 日 - 5 次点击
数据库 2
1 月 2 日 - 5 次点击
1 月 3 日 - 10 次点击
1 月 5 日 - 5 次点击
我看到的输出是这样的:
1 月 1 日 - 10 次点击
1 月 3 日 - 15 次点击
1 月 4 日 - 5 次点击
1 月 2 日 - 5 次点击
1 月 3 日 - 10 次点击
1 月 5 日 - 5 次点击
而我正在寻找的应该是这样的
1 月 1 日 - 10 次点击
1 月 2 日 - 5 次点击
1 月 3 日 - 25 次点击
1 月 4 日 - 5 次点击
1 月 5 日 - 5 次点击
一如既往,非常感谢任何帮助!
编辑 - 添加源代码
下面是更多代码,可以更好地解释我想要实现的目标。
'*******POPULATE GRIDVIEW-BREAKDOWN CONTROL**************
Dim tblBreakdownA As DataTable 'holds results from Database A
Dim tblBreakdownB As DataTable 'holds results from Database B
GridViewBreakDown.Visible = True
lblBreakdown.Visible = True
'Connection to Database A
Using myConnection As New SqlConnection
myConnection.ConnectionString = CONNECTION STRING
Dim mySelect As New SqlCommand
mySelect.Connection = myConnection
mySelect.CommandText = "SELECT STATEMENT"
myConnection.Open()
Dim myReader As SqlDataReader = mySelect.ExecuteReader()
tblBreakdownA = New DataTable("Breakdown")
tblBreakdownA.Load(myReader)
myReader.Close()
myConnection.Close()
End Using
'Connection to Database B
Using myConnection As New SqlConnection
myConnection.ConnectionString =CONNECTION STRING
Dim mySelect As New SqlCommand
mySelect.Connection = myConnection
mySelect.CommandText = "SELECT STATEMENT"
myConnection.Open()
Dim myReader As SqlDataReader = mySelect.ExecuteReader()
tblBreakdownB = New DataTable("Breakdown")
tblBreakdownB.Load(myReader)
myReader.Close()
myConnection.Close()
End Using
tblBreakdownA.Merge(tblBreakdownB, False, MissingSchemaAction.Add)
GridViewBreakDown.DataSource = tblBreakdownA
GridViewBreakDown.DataBind()
【问题讨论】: