select table1.name from table1,table2,table3 where table1.workid=table2.workid and table2.jobid=table3.jobid and (table3.jobname='市场部' or table1.age>50)
select A.a, B.a from (select a from T1 where a in (select G as a from ..)...) A, (select a from T2 where...) B 用这样的结构不是很容易吗?
我不太明白你的意思,特别是table3的作用,不过按照你说的,将会有许多人帮你写这条SQL语句,我就不写了,没多大实在的、可以学习的意思。我有个疑问,为什么不把部门编号,放在table1表中呢?如果是为了记录某些员工即是员工,也是某个部门经理这样的信息,表的结构也不太合理,这是关系数据结构中的特殊关系(我记的不太清楚,是不是这个名词),有本书关于关系数据库结构设计挺好,是清华出版社出版,《数据库理论》,黄色的封面,书中有详细介绍各种关系数据库的设计方法,向你推荐。我想如果是我,我会这样设计,或者说按照书中介绍的方法。employee table1: id name sex age dept_id(c,3) mgr_id(c,3)deptment table2: id name(部门名称)adds_name(简称)descmgr talbe3:(记载经理的相关信息) id descps: 另外,在表结构代码编号设计中有种常用的方法,如table1中mgr_id字段,记为'000'或'999'或'FFF'有其它的特殊含意。这样的结构表达的信息更直接!
to pjy: 这样的写法也有问题,如果这名员工不在任何工作部门,也就是说在table2中没有他的workid,那么他将不会被查询到,尽管他可能大于50. to zheng:这样的语句太长,不易读,而且查询速度也比较慢。 to williamgui:如果一个员工可能参与多个工作部门,那么table2是必须要的。
B.a
from (select a from T1 where a in (select G as a from ..)...) A,
(select a from T2 where...) B
用这样的结构不是很容易吗?
我不太明白你的意思,特别是table3的作用,不过按照你说的,将会有许多人帮你写这条SQL语句,我就不写了,没多大实在的、可以学习的意思。我有个疑问,为什么不把部门编号,放在table1表中呢?如果是为了记录某些员工即是员工,也是某个部门经理这样的信息,表的结构也不太合理,这是关系数据结构中的特殊关系(我记的不太清楚,是不是这个名词),有本书关于关系数据库结构设计挺好,是清华出版社出版,《数据库理论》,黄色的封面,书中有详细介绍各种关系数据库的设计方法,向你推荐。我想如果是我,我会这样设计,或者说按照书中介绍的方法。employee table1:
id name sex age dept_id(c,3) mgr_id(c,3)deptment table2:
id name(部门名称)adds_name(简称)descmgr talbe3:(记载经理的相关信息)
id descps: 另外,在表结构代码编号设计中有种常用的方法,如table1中mgr_id字段,记为'000'或'999'或'FFF'有其它的特殊含意。这样的结构表达的信息更直接!
to zheng:这样的语句太长,不易读,而且查询速度也比较慢。
to williamgui:如果一个员工可能参与多个工作部门,那么table2是必须要的。