有这么四个表(用ADO连接SQLServer数据库)医院雇员 employee,医生physician,护士nurse,技师technician,(注意雇员是单独的一个工作类别,相当于医院的行政人员,并不是一个全集),如果要查询医院所有工作人员的工资,并按工资人员名称排序,那该如何连接这四个表啊?用SQL语句该怎么写呢?想了好久,自己解决不了了,麻烦各位帮帮忙。(用ADO连接SQLServer数据库)

解决方案 »

  1.   

    可否运用这样的一个模式来完成这个查询工资的功能呢?
    用ADOQuery来实现动态查询,用ADODataSet实现对数据集的操作,用DBGrid显示数据集。
      

  2.   

    SELECT * FROM (
    SELECT 姓名,工资 FROM employee  UNION
    SELECT 姓名,工资 FROM physician UNION
    SELECT 姓名,工资 FROM nurse     UNION
    SELECT 姓名,工资 FROM technician
    )A ORDER BY 姓名
      

  3.   

    这4个标之间总该有些联系吧,比如说4个表中的人员姓名因该在同一个人员表中。。如果有的话就用视图,
    没有的话可以用union,但显示的字段数目必须一样
      select 姓名,年龄 from table1 union 姓名,年龄 from table2
      

  4.   

    select a.工资,b.工资,c.工资,d.工资 from employee a, physician b,nurse c,technician d order by a.名称,b.名称,c.名称,d.名称如果要把所有人工资当成一字段,然后再排序则写一存储过程:
    Create procedure abc
    as
    begin
      CREATE table #TmpTable
      (
        sname varchar(20),
        gz dec(9,3)
       )  
    INSERT INTO #TmpTable SELECT 名称,工资 from employee 
    INSERT INTO #TmpTable SELECT 名称,工资 from physician 
    INSERT INTO #TmpTable SELECT 名称,工资 from nurse 
    INSERT INTO #TmpTable SELECT 名称,工资 from technician select sname,gz from #TmpTable order by sname 
    end
    end