SQL建立多表连接的视图

如下是3个表createtableHIC_base(snchar(30)primarykey,--SN编号(唯一、字符串);1uidchar(40)uniquenotnu... 如下是3个表
create table HIC_base(
sn char(30) primary key, --SN编号(唯一、字符串);1
uid char(40) unique not null, --用户关键码(唯一、字符串);2
shno varchar(30) not null--发货商代码号;12
);

create table HIC_shippers(
shno varchar(30) primary key not null, --发货商代码号;12
shname varchar(40) not null, --发货商名称13
foreign key(shno) references HIC_base(shno)
);

create table HIC_device(
sn char(30) primary key, --SN编号(唯一、字符串);1
model char(30) not null, --HIC产品型号;3
foreign key(sn) references HIC_base(sn)
);

如上
我试图建立个视图,取用以上3个表的信息,显示,每个shno所拥有的每个model的sn的数量。。。不知我的表述是否能让人理解。。

create view HIC_shMdNumDet(shno,shname,mdNum,model,snNum)
如上,snNum指的是,每个同样的model对应的sn数量。。。。

各种感激帮助者
mdNum指的是,每个shipper.shno拥有的model 个数
snNum指的是,每个商家,每个model拥有的sn个数
视图什么其实没什么。。
求一个Select,主要是要求得到 mdNum 和 snNum的统计值
展开
 我来答
落月Prc
推荐于2017-11-28 · TA获得超过2789个赞
知道大有可为答主
回答量:2011
采纳率:100%
帮助的人:2615万
展开全部
先写了个查询语句,你看看执行没问题吧?没问题的话再变成视图。
因为你要的结果中,mdNum和model是1对多的关系,所以用了右外连接,不知道结果是不是你想要的结果。
select shno,shname,mdNum,model,snNum from
(select a.shno,a.shname,count(a.sn) mdNum,c.model from HIC_shippers a join HIC_base b on a.shno=b.shno
join HIC_device c on a.sn=c.sn group by a.shno,a.shname,c.model) a
right join (select model,count(c.sn) snNum from HIC_base b
join HIC_device c on a.sn=c.sn group by b.shno,c.model) b
on a.model=b.model
更多追问追答
追问
执行有问题。。。
a 和 b什么重名了吧?
“Server: Msg 107, Level 16, State 2, Line 1
列前缀 'a' 与查询中所用的表名或别名不匹配。
追答
哦对》。。。
select a.shno,a.shname,a.mdNum,b.model,b.snNum from
(select a.shno,a.shname,count(a.sn) mdNum,c.model from HIC_shippers a join HIC_base b on a.shno=b.shno
join HIC_device c on a.sn=c.sn group by a.shno,a.shname,c.model) a
right join (select model,count(c.sn) snNum from HIC_base b
join HIC_device c on a.sn=c.sn group by b.shno,c.model) b
on a.model=b.model
沉静又白净丶小猫6549
2011-08-08 · 贡献了超过196个回答
知道答主
回答量:196
采纳率:0%
帮助的人:40.7万
展开全部
建视图,最好表有索引,这样多表联合,检索的效率会好一些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2011-08-01 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1905万
展开全部
不是很明白你的意思,
不过你要建视图,最好表有索引,这样多表联合,检索的效率会好一些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2011-07-29 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.2亿
展开全部
完全可以的,不过我质疑你这个视图用后效率到底能提高多少。。
更多追问追答
追问
我知道可以的,刚刚做了个2表连接的统计,现在做3表的实在受不了。。
。。。
视图一定要追求效率么?拥有统计,看起来清爽不少也可以认为是目的
追答
mdNum是什么? 一般作视图都是为了效率或者起到权限控制作用的.

SELECT shp.shno, shp.shname, base.model, SUM(base.sn)
FROM HIC_shippers shp ,HIC_device dev, HIC_base base
WHERE shp.shno = base.shno
AND base.sn = dev.sn
Group by shp.shno, shp.shname, base.model
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式