外链论坛

 找回密码
 立即注册
搜索
查看: 89|回复: 3

怎么样在两个区别的SQL中创立内连接

[复制链接]

2611

主题

254

回帖

9912万

积分

论坛元老

Rank: 8Rank: 8

积分
99120660
发表于 2024-8-4 15:41:03 | 显示全部楼层 |阅读模式

大众好,今日继续讲解VBA数据库处理方法,今日的内容是第67讲:内连接INNER怎样在两个区别的SQL中创立连接。今日的内容是之前内容的延伸,在前面的讲解中我讲了利用INNER连接的两个数据源都是字段值与值的要求匹配,倘若字段不是独一值时数据会报错。怎样理解这个问题呢?所说连接,目的是查找,找出要求相同值的匹配,针对一对多,多对一的匹配,在内连接中是没法创立起对应关系的,多对一,一对多怎样连接,不是咱们关心的,咱们关心的是怎样把多值查找变成值的独一查找便是说在连接前,要创立一个值的排重处理,这个排重处理咱们在工作表中能够用数据透视表来完成,这里咱们采用的方法是SQL语句。

咱们还是以实例来仔细讲解,实例,某策划机构团队中有两个负责分部针对策划项目的报价,在外联分部报价是:

每一个项目中由若干个类别构成每一个类别必须的人数和价格如上,同期后勤分部的报价如下:

报价中含有对每一个项目构成类别的占用车辆及必须的工具套数和单价。

当收到以上两个分部报价后,咱们按照内容整理出总的报价,总报价中不必关心其中小类别的报价,只要汇总就可咱们要得出的只是项目,总人数,总价格,出动车辆,工具总套数,工具总价格等字段汇总,这个时候该怎样处理呢?

思路:针对两个数据表先分别进行数据的汇总,而后再用内连接同期连接这两个汇总的数据,就能够得到咱们最后结果了。当然,思路很好创立怎样实现呢?

咱们先看下面我给出的代码:

Sub mynzRecords_67() 第67讲 内连接Inner join 连接两个SQL

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("67").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties=excel 12.0;hdr=yes;imex=1;data source=" & strPath

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

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

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

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

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

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

rsADO.Open strSQL, cnADO, 1, 3

For i = 1 To rsADO.Fields.Count

Cells(1, i) = rsADO.Fields(i - 1).Name

Next

Range("a2").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

代码诠释

1 以上代码先用SQL1 和SQL2 对"数据4" 工作表和"数据5"工作表进行数据的汇总。创立项目的汇总数据。

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

以上SQL语句实现的的是对工作表4的汇总,上面有新的字段的设置。

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

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

以上SQL语句实现的的是对工作表5的汇总,上面有新的字段的设置。

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

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

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

利用以上的SQL语句,实现了对SQL1和SQL2的内连接,要求是a.项目=b.项目。

以上语句应用非常的方便,但我仍是反复的提醒大众重视,尽可能不要自己去写代码,我提倡的是搭积木的思想,创立起自己的代码库,用的时候,能够方便的利用就可

下面看本实例的运行状况

这般就给出了,三个项目的报价名单

今日内容回向:

1 怎样创立连接于两个SQL的内间接查找

2 应用于连接于两个SQL的内间接查找是什么样的实质场景?

回复

使用道具 举报

0

主题

2万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-24 22:18:40 | 显示全部楼层
交流如星光璀璨,点亮思想夜空。
回复

使用道具 举报

0

主题

2万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 6 天前 | 显示全部楼层
这夸赞甜到心里,让我感觉温暖无比。
回复

使用道具 举报

0

主题

2万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 3 天前 | 显示全部楼层
i免费外链发布平台 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-9-17 06:08 , Processed in 0.067827 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.