您的位置 首页 > 数码极客

表格如何分两块能同时看到数据库

大家好,今日继续讲解VBA数据库解决方案,今日的内容是第68讲:左外连接LEFT JOIN实现同时连接两个不同SQL的方法。在数据库解决方案中,我模拟了很多的情况,在其中结合多种连接模式,在实现解决问题的前提下,可以应用的连接有多种,大家要根据自己的理解和掌握的程度,选择自己熟悉的连接方式。比如左外连接和右外连接有时候是可以互换的。

我们今日讲解的内容是应用于左外连接LEFT JOIN语句实现同时连接两个不同的SQL的方法,在左外连接查询前要先在数据源中实现排重。我们举的实例和上一讲类似,为了看到左连接的特点,我在"数据4"的工作表中增加了几组数据。

实例,某策划公司团队中对于策划项目的报价,在外联部门报价是:

同时后勤部门的报价如下:

报价中含有对每个项目组成中类别的占用车辆及需要的工具套数和单价。

当收到上述报价后,我们要根据内容整理出总的报价,总报价中不必关心其中小类别,我们要得出的只是项目,总人数,总价格,出动车辆,工具总套数,工具总价格的字段汇总。

思路:对于两个数据表先分别进行数据的汇总,然后再用左外连接同时连接这两个汇总的数据,就可以得到我们的最终结果了。由于我这讲的内容侧重关心的是数据源"数据4",要把这个数据资料放在左表,然后建立一个左外连接。实现我们的要求,

下面看我的代码:

Sub mynzRecords_68() '第68讲 左外连接left join ON 连接两个SQL

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("68").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = T

cnADO.Open "provider=Micro;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

'建立SQL1 连接数据源,汇总项目

strSQL1 = "select 项目,SUM(人数) AS 总人数,SUM(价格) AS 总价格 from [数据4$] group by 项目"

'建立SQL2 连接数据源,汇总项目

strSQL2 = "select 项目,SUM(车辆) AS 出动车辆,SUM(工具套数) AS 工具总套数,SUM(工具套数*工具单价) AS " _

& "工具总价格 from [数据5$] group by 项目"

'建立SQL 连接之前建立的两个SQL语句

strSQL = "Select a.项目,a.总人数,a.总价格,b.出动车辆,b.工具总套数,b.工具总价格 From (" _

& strSQL1 & ") a left Join (" & strSQL2 & ") b " _

& "ON a.项目=b.项目 GROUP BY a.项目,a.总人数,a.总价格,b.出动车辆,b.工具总套数,b.工具总价格"

'打开记录集

r strSQL, cnADO, 1, 3

For i = 1 To r

Cells(1, i) = r(i - 1).Name

Next

'提出数据

Range("a2").CopyFromRecordset rsADO

'释放内存

r

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

代码解析:

1 上述代码应用于侧重于左表,返回左表各个字段的汇总表格,当右表中没有数据时返回null,对于左右表,是在左外连接前,用SQL建立的汇总表格。

2 '建立SQL1 连接数据源,汇总项目

strSQL1 = "select 项目,SUM(人数) AS 总人数,SUM(价格) AS 总价格 from [数据4$] group by 项目"

上述SQL语句实现了数据源[数据4$]的数据汇总。

3 '建立SQL2 连接数据源,汇总项目

strSQL2 = "select 项目,SUM(车辆) AS 出动车辆,SUM(工具套数) AS 工具总套数,SUM(工具套数*工具单价) AS " _

& "工具总价格 from [数据5$] group by 项目"

上述SQL语句实现了数据源[数据5$]的数据汇总。

4 '建立SQL 连接之前建立的两个SQL语句

strSQL = "Select a.项目,a.总人数,a.总价格,b.出动车辆,b.工具总套数,b.工具总价格 From (" _

& strSQL1 & ") a left Join (" & strSQL2 & ") b " _

& "ON a.项目=b.项目 GROUP BY a.项目,a.总人数,a.总价格,b.出动车辆,b.工具总套数,b.工具总价格"

上述SQL语句实现了数据源strSQL1和数据源strSQL2的左连接。下面我们看代码的运行情况:

今日内容回向:

1 左外连接是如何实现连接两个SQL语句的?

2 上述方案用于什么情况呢?

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“表格如何分两块能同时看到数据库”边界阅读