select table1.name from table1,table2,table3 where table1.workid=table2.workid and table2.jobid=table3.jobid and (table3.jobname='市场部' or table1.age>50)

解决方案 »

  1.   

    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
    用这样的结构不是很容易吗?  
       
      

  2.   


    我不太明白你的意思,特别是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'有其它的特殊含意。这样的结构表达的信息更直接!
      

  3.   

    to pjy: 这样的写法也有问题,如果这名员工不在任何工作部门,也就是说在table2中没有他的workid,那么他将不会被查询到,尽管他可能大于50.
    to zheng:这样的语句太长,不易读,而且查询速度也比较慢。
    to williamgui:如果一个员工可能参与多个工作部门,那么table2是必须要的。
      

  4.   

      如果这样设计却不能保证每个员工都有Workid,那只能说数据完整性太差。