求教:这个视图该怎么建?

ultrawu 2006-06-22 09:58:25
举个例子吧
学生表:A(学生编号id,姓名name)
学生特长表:B(学生编号id,特长名称),特长名称取值为:音乐,美术,体育

现在想建一个视图v(编号id,姓名name,音乐,美术,体育),其中音乐,美术,体育是一个布尔字段,标识这个学生有没有这个特长。创建这个视图的语句该怎么写呢?

谢谢各位!
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snooper 2006-06-23
  • 打赏
  • 举报
回复
关注
ultrawu 2006-06-23
  • 打赏
  • 举报
回复
好像很麻烦啊,有没有更简单一点的方法呢
fjmingyang 2006-06-23
  • 打赏
  • 举报
回复
学生编号id 姓名name 音乐 美术 体育
10001 cld 1 0 0
10001 cld 0 1 0
10002 abc 0 0 1


对于这个结果你可以 再求和:
CREATE OR REPLACE VIEW VIEW_NAME AS
select SELECT A.学生编号id,A.姓名name, sum(音乐),sum(美术),sum(体育) from
(
A.学生编号id,A.姓名name,
DECODE(BB.特长名称, '音乐', '1', '0') AS 音乐,
DECODE(BB.特长名称, '美术', '1', '0') AS 美术,
DECODE(BB.特长名称, '体育', '1', '0') AS 体育
FROM
A, (SELECT 学生编号id, 特长名称 FROM B GROUP BY 学生编号id, 特长名称) BB
WHERE
A.学生编号id = BB.学生编号id
)
group by A.学生编号id,A.姓名name
/
ultrawu 2006-06-23
  • 打赏
  • 举报
回复
结贴,给分
fenxue 2006-06-23
  • 打赏
  • 举报
回复
这论坛是怎么回事,
我发的贴明明很整齐的
怎么会这样,汗!
fenxue 2006-06-23
  • 打赏
  • 举报
回复
我感觉有点不妥,比如两张表:
表A: 表B:
学生编号id 姓名name 学生编号id,特长名称
10001 cld 10001 音乐
10002 abc 10001 美术
10002 体育

而这条SQL 语句:(SELECT 学生编号id, 特长名称 FROM B GROUP BY 学生编号id, 特长名称);
显示的结果就是上述表B显示的结构,因此按照上述PL/SQL语句,会造成如下结构:
视图:C
学生编号id 姓名name 音乐 美术 体育
10001 cld 1 0 0
10001 cld 0 1 0
10002 abc 0 0 1

因此不会符合题目的要求!
njcao 2006-06-22
  • 打赏
  • 举报
回复
CREATE OR REPLACE VIEW VIEW_NAME AS
SELECT
A.学生编号id,A.姓名name,
DECODE(BB.特长名称, '音乐', '1', '0') AS 音乐,
DECODE(BB.特长名称, '美术', '1', '0') AS 美术,
DECODE(BB.特长名称, '体育', '1', '0') AS 体育
FROM
A, (SELECT 学生编号id, 特长名称 FROM B GROUP BY 学生编号id, 特长名称) BB
WHERE
A.学生编号id = BB.学生编号id
/

17,075

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧