注册 登录
编程论坛 SQL Server论坛

[求助]创建视图

hmj0108 发布于 2007-01-07 20:24, 1162 次点击
表 tblEmployee 包括如下属性:
名称 说明
EmployeeID 员工编号
Name 员工姓名
LoginName 员工登录名
Password 员工登录密码
Email 员工电子邮件
DeptID 员工所属部门编号
BasicSalary 员工基本工资
TitleID 员工职位编号
Telephone 员工电话
OnboardDate 员工报到日期
SelfIntro 员工自我介绍
VacationRemain 员工剩余假期
PhotoImage 员工照片
表tblDepartment包括如下属性:
名称 说明
DeptID 部门编号
DeptName 部门名称
Desciption 部门描述
ManagerID 部门经理编号


创建视图...此视图通过左外联接表 tblEmployee 和 tblDepartment 得到了员工的详细信息,其中包括员工的基本信息、员工的部门信息和员工经理信息。
 基表
 tblEmployee
 tblDepartment
 视图包含字段
 EmployeeID(员工编号)
 Name(姓名)
 Email(电子邮件)
 Telephone(电话)
 LoginName(登录名)
 Password(密码)
 BasicSalary(基本工资)
 OnboardDate(报道日期)
 ManagerName(部门经理姓名)
 ManagerEmail(部门经理电子邮件)
 DeptName(部门名称)
 SelfIntro(自述)
 VacationRemain(剩余假期小时数)
请问下..如何输出部门经理姓名和电子邮件这两个字段..代码应该怎么写
10 回复
#2
hmj01082007-01-07 20:26
还有一个
创建视图...此视图通过内联接表 tblDepartment 和 tblEmployee,得到经理的所有基本信息。
 基表
 tblDepartment
 tblEmployee
 视图包含的字段
 ManagerName(经理姓名)
 ManagerEmail(经理电子邮件)
 DeptName(部门名称)
 ManagerID(理解雇员编号)
 DeptID(部门编号)
各位大侠..哪位懂的请教教..很急..
#3
yhxyh2007-01-07 23:01
请写出代码!创建表的代码!
#4
hmj01082007-01-08 08:28
如何在SQL 中一条一条查询..然后使用NEXT指向下一条..
#5
棉花糖ONE2007-01-08 08:33
如果要一条一条的查就用游标
#6
hmj01082007-01-08 09:55
假如要判断某个字段的值应该怎么写..像上面tblEmployee有一个字段TITLEID..假如我们要判断他的值应该怎么写..
#7
棉花糖ONE2007-01-08 10:18

楼主去查一下,left join和inner join的用法

#8
hmj01082007-01-08 13:01

那两个我会用吖..我就是不知道要怎么来输出部门经理姓名和电子邮件这两个值..要怎么来弄这两个值吖..

#9
Kendy1234562007-01-08 16:16

根据你的描述 部门经理姓名和电子邮件这2个字段根本就不存在于你所依托的2个数据表中,所以光靠这2张表是建立不起来这个view的!
去找存在这2个字段的第三张表,然后引用到视图中来吧 如果找不到 那你这个问题就成了 谍中谍4 (Impossible mission -_-)

#10
hmj01082007-01-08 18:51

请问下..如果要在select EmployeeID,name,(select name from tblemployee where left(employeeid,2)='01' and titleid='2') from tblemployee

意思要这样..可不可以

#11
Kendy1234562007-01-09 10:07

当然可以了。。。不过语句要改成

select EmployeeID,name,ManagerName,ManagerEmail,a.DeptID,a.Telephone,A.LoginName,A.BasicSlalary...... from tblemployee a join
(select ManagerName = name,ManagerEmail =email,DeptID from tblemployee where left(employeeid,2)='01' and titleid='2' from tblemployee) b
on a.DeptID = b.DeptID
这么做的大前提是你假定了部门经理的employeeid也在员工表中 以01开头并且titleid = 2. 这样就完全没有用到department表 -_-

如果我们用另外种假设 即部门经理的ManagerID 就是他自己在员工表中的employeeid,那么取得经理姓名和邮件地址就变成如下

select a.managerid, a.DeptID,ManagerName = name,ManagerEmail=email from tbldepartment a
join tblemployee b on a.managerid = b.employeeid
你可以参照上面的方式写成子查询

1