仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 711|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之用 INNER JOIN语法连接多个表建纪录集

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用纪录集|语法用INNERJOIN语法连接多个表建纪录集多表连接创建纪录集是非常有效的,由于某些情形下,我们必要把数字数据范例显现为响应的文本称号,这就碰到了多表连接创建纪录集的成绩。好比作一个会员注册体系,共有五个表,会员信息数据表member、会员身份表MemberIdentity、会员权限表MemberLevel、会员种别表MemberSort和会员婚姻情况表Wedlock。假如想把会员注册信息全体显现出来,一定要将这四个表连起来,不然人人看到的某些会员信息大概只是数据编号。
以会员种别表来讲,在其数据表中,1代表一般会员,2代表初级会员,3代表毕生会员,在显现时,假如不将会员种别表预会员具体数据表相干联,那末假设我们如今看到的是一位一般会员的注册信息,我们只能看到其种别为1,而谁又会晓得1代表的是一般会员呢?以是要将会员种别表预会员具体数据表相干联,联系关系后,1就显现为一般会员,2就显现为初级会员,3就显现为毕生会员,如许多好?同理,别的两个表也要预会员具体数据表相干联才干把数据编号显现为响应的称号。

前天制造网站背景时碰到此成绩,在面包论坛、狂迷俱乐部、蓝色幻想、和5D多媒体论坛发了贴子求救,都没有取得谜底,只好本人研讨,花了两地利间终究乐成,现将其写成教程供人人分享,但愿人人少走弯路。
本教程是把五个表联在一同,假如乐意,您能够将更多的表联在一同,办法迥然不同啦~

步骤一:用Access软件创建一个名为Member的数据库,在个中建五个表,分离为:会员信息数据表member、会员身份表MemberIdentity、会员权限表MemberLevel、会员种别表MemberSort和会员婚姻情况表Wedlock。

●会员信息数据表member:
MemberID:主动编号,主键(ID号)
MemberSort:数字(会员种别)
MemberName:文本,会员姓名
Password:文本(会员暗码)
MemberLevel:数字(会员权限)
MemberIdentity:数字(会员身份)
Wedlock:数字(婚姻情况)
MemberQQ:文本(QQ号码)
MemberEmail:文本(会员邮箱)
MemberDate:日期/工夫(会员注册日期)

●会员身份表MemberIdentity:
MemberIdentity:主动编号,主键(ID号)
IdentityName:文本(会员身份称号)

●会员权限表MemberLevel:
MemberLevel:主动编号,主键(ID号)
LevelName:文本(会员权限称号)

●会员种别表MemberSort:
MemberSort:主动编号,主键(ID号)
SortName:文本(会员种别称号)

●会员婚姻情况表Wedlock
Wedlock:主动编号,主键(ID号)
WedlockName:文本(会员婚姻情况种别)
申明:五个表建好后,您能够自行设置您想要的种别,如会员权限,您能够设置两个种别--“未付费会员”和“已付费会员”,编号分离为“1”、“2”,如您设置了三个选项,那末第三个选项的编号固然就是“3”了。
上面我们所要作的事情就是把“1”、“2”之类的编号显现为“未付费会员”和“已付费会员”,不然,人人谁会晓得“1”代表的是“未付费会员”,“2”代表的是“已付费会员”?

步骤二:建DSN数据源,建纪录集
●运转DreamweaverMX软件,在会员注册信息显现页面建一个名为ConnMember(您也能够起别的的称号)的DSN数据源。

●点击服务器举动面板中的“绑定”,建一个名为MemberShow的数据集,“毗连”选择ConnMember,“表格”选择Member,“列”全选,“排序”选择MemberDate,降序。点击“初级”按钮,修正SQL框中主动天生的代码:
原代码为:
SELECT*
FROMMember
ORDERBYMemberDateDESC

将代码修正为:
SELECT*
FROM(((MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel)INNERJOINMemberIdentityONMember.MemberIdentity=MemberIdentity.MemberIdentity)INNERJOINWedlockONMember.Wedlock=Wedlock.Wedlock
ORDERBYMemberDateDESC
修正完代码后,点击“断定”,半途而废!
如今,您能够翻开纪录集看一下,五个表中的字段全体集成在MemberShow纪录会合,您只需将响应的字段绑定在该字段想显现的单位格中便可。这下好了,一切的数字编号全体酿成了响应的称号,如会员权限,不再是“1”和“2”的数字情势了,而是酿成了响应的称号“未付费会员”和“已付费会员”。别的的数字编号也酿成了显现的文本称号,是否是很高兴呢?

注重事项:
●在输出字母过程当中,必定要用英文半角标点标记,单词之间留一半角空格;
●在创建数据表时,假如一个表与多个表连接,那末这一个表中的字段必需是“数字”数据范例,而多个表中的不异字段必需是主键,并且是“主动编号”数据范例。不然,很难连接乐成。
●代码嵌套疾速办法:如,想毗连五个表,则只需在毗连四个表的代码上加一个前后括号(前括号加在FROM的前面,后括号加在代码的开端便可),然后在后括号前面持续增加“INNERJOIN表名XON表1.字段号=表X.字段号”代码便可,如许就能够无穷连接数据表了:)

语法格局:
实在INNERJOIN……ON的语法格局能够归纳综合为:
FROM(((表1INNERJOIN表2ON表1.字段号=表2.字段号)INNERJOIN表3ON表1.字段号=表3.字段号)INNERJOIN表4ONMember.字段号=表4.字段号)INNERJOIN表XONMember.字段号=表X.字段号
您只需套用该格局就能够了。

现成格局典范:
固然我说得已对照分明了,但为照应初学者,我仍是以本会员注册体系为例,供应一些现成的语法格局典范,人人只需修正个中的数据表称号和字段称号便可。

毗连两个数据表的用法:
FROMMemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort
语法格局能够归纳综合为:
FROM表1INNERJOIN表2ON表1.字段号=表2.字段号

毗连三个数据表的用法:
FROM(MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel
语法格局能够归纳综合为:
FROM(表1INNERJOIN表2ON表1.字段号=表2.字段号)INNERJOIN表3ON表1.字段号=表3.字段号

毗连四个数据表的用法:
FROM((MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel)INNERJOINMemberIdentityONMember.MemberIdentity=MemberIdentity.MemberIdentity
语法格局能够归纳综合为:
FROM((表1INNERJOIN表2ON表1.字段号=表2.字段号)INNERJOIN表3ON表1.字段号=表3.字段号)INNERJOIN表4ONMember.字段号=表4.字段号

毗连五个数据表的用法:
FROM(((MemberINNERJOINMemberSortONMember.MemberSort=MemberSort.MemberSort)INNERJOINMemberLevelONMember.MemberLevel=MemberLevel.MemberLevel)INNERJOINMemberIdentityONMember.MemberIdentity=MemberIdentity.MemberIdentity)INNERJOINWedlockONMember.Wedlock=Wedlock.Wedlock
语法格局能够归纳综合为:
FROM(((表1INNERJOIN表2ON表1.字段号=表2.字段号)INNERJOIN表3ON表1.字段号=表3.字段号)INNERJOIN表4ONMember.字段号=表4.字段号)INNERJOIN表5ONMember.字段号=表5.字段号

毗连六个数据表的用法:略,与上述连接办法相似,人人触类旁通吧:)
支持多线程,充分利用CPU资源
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-19 18:02:37 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-26 23:40:22 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
谁可相欹 该用户已被删除
地板
发表于 2015-2-4 23:01:59 | 只看该作者
无法深入到数据库系统层面去了解和探究
蒙在股里 该用户已被删除
5#
发表于 2015-2-10 22:36:15 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
只想知道 该用户已被删除
6#
发表于 2015-3-1 16:53:49 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
小魔女 该用户已被删除
7#
发表于 2015-3-10 21:14:34 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
山那边是海 该用户已被删除
8#
发表于 2015-3-17 10:10:40 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
再现理想 该用户已被删除
9#
发表于 2015-3-24 06:51:12 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 11:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表