回 帖 发 新 帖 刷新版面

主题:加急~!知道请告诉下!谢谢了!

/*建立员工管理数据库EmployeeManager*/
create database EmplayeeManager
use EmplayeeManager
-----------------------------------

/*表一:地区表Area*/
create table Area
(
    a_no int primary key,
    a_name varchar(50) not null
)
-----------------------------------

/*表二: 部门表Department*/
create table Drpartment
(
    d_no int primary key,
    d_name varchar(50) not null
)
-----------------------------------

/*表三:职位表Position*/
create table Position
(
    p_no int primary key,
    p_name varchar(50) not null
)
-----------------------------------

/*表四: 员工表Employee*/
create table Employee
(
    e_no int primary key,
    e_name varchar(50) not null,
    e_birthday datetime check(e_birthday<=getdate()),
    e_sex varchar(2) check(e_sex='男'or e_sex='女') default '男',
    e_hiretime datetime check(e_hiretime<=getDate()),
    d_no int foreign key references Drpartment(d_no),
    e_bossno int foreign key references Employee(e_no),
    p_no int foreign key references Position(p_no),
    a_no int foreign key references Area(a_no),
    e_salary money check(e_salary>0),
    e_bonus money check(e_bonus>=0),
)
-----------------------------------

/*加2个字段*/
alter table Employee add e_phone int
/*在职位表,地区表,部门表中各添3~5条数据,在员工表中添至少10条数据*/
insert Area values(1,'北京')
insert Area values(2,'上海')
insert Area values(3,'大连')

insert Drpartment values(1,'销售部')
insert Drpartment values(2,'市场部')
insert Drpartment values(3,'开发部')

insert Position values(1,'董事')
insert Position values(2,'部门经理')
insert Position values(3,'组长')

insert Employee values(1,'E1','1981/1/1','男','1991/1/1',1,1,1,1,1000,100,'12345678')
insert Employee values(2,'E2','1982/2/1','女','1992/1/1',2,1,1,1,2000,200,'12335678')
insert Employee values(3,'E3','1983/3/1','男','1993/1/1',3,1,1,1,3000,300,'12345678')
insert Employee values(4,'E4','1984/4/1','女','1994/1/1',1,2,2,2,4000,400,'12345778')
insert Employee values(5,'E5','1985/5/1','男','1995/1/1',2,2,2,2,5000,500,'12325678')
insert Employee values(6,'E6','1986/6/1','女','1996/1/1',3,2,2,2,6000,600,'12145678')
insert Employee values(7,'E7','1987/7/1','男','1997/1/1',1,3,3,3,7000,700,'12348678')
insert Employee values(8,'E8','1988/8/1','女','1998/1/1',2,3,3,3,8000,800,'12145678')
insert Employee values(9,'黎平','1989/9/1','男','1999/1/1',3,3,3,3,9000,900,'13695678')
insert Employee values(10,'李红','1990/10/1','女','2006/1/1',1,3,3,3,10000,0,'12945678')

问题如下:

查询每个部门薪水最高的人的姓名,性别,和薪水~~
语句怎么写啊?
急啊!!!

回复列表 (共17个回复)

沙发

select top 1 Employee.e_name,Employee.e_sex,Employee.e_salary from
((Employee inner join Department on Employee.d_no =Department.d_no) inner join
Position on Employee.p_no =Position.p_no) inner join Area on
Employee.a_no=Area.a_no 
group by Department.d_name,Employee.e_salary 
order by Employee.e_salary desc
试一试

板凳

还是不行啊
服务器: 消息 8120,级别 16,状态 1,行 1
列 'Employee.e_name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'Employee.e_sex' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。


刚才你写的我改完后的:
select top 1 Employee.e_name,Employee.e_sex,Employee.e_salary from
((Area inner join Drpartment on Area.a_no =Drpartment.d_no) inner join
Position on Area.a_no =Position.p_no) inner join Employee on
Employee.e_no=Area.a_no 
group by Drpartment.d_name,Employee.e_salary 
order by Employee.e_salary desc
刚开始给我的Drpartment写错了~

3 楼

e_bossno int foreign key references Employee(e_no),
这个定义是不是有问题,怎么自己表里面字段定义为外部的?

4 楼

我刚才没看清楚,已经修改了一下.我开始以为_no是四个表关联的,后来才知道不是的

5 楼


不知道外键应该没问题吧?那现应该怎么改才对啊?

6 楼

[quote]Area.a_no 、Drpartment.d_no、Position.p_no、
Employee.e_no[/quote]
是我看是误会了,它们之间是没有联系的,都在Employee表中有相关字段

7 楼

e_bossno int foreign key references Employee(e_no),应该不是外部键。

我似乎明白你的意图了,该字段表示该职员的领导的唯一性编号,对不对?

8 楼


服务器: 消息 8120,级别 16,状态 1,行 1
列 'Employee.e_name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'Employee.e_sex' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
还是这个

9 楼

[quote]e_bossno int foreign key references Employee(e_no),应该不是外部键。

我似乎明白你的意图了,该字段表示该职员的领导的唯一性编号,对不对?
[/quote]
是的~领导和别的都是唯一的~

10 楼


看了下可能还是没把e_name之类+进去~

我来回复

您尚未登录,请登录后再回复。点此登录或注册