SELECT * FROM ( SELECT 姓名,工资 FROM employee UNION SELECT 姓名,工资 FROM physician UNION SELECT 姓名,工资 FROM nurse UNION SELECT 姓名,工资 FROM technician )A ORDER BY 姓名
这4个标之间总该有些联系吧,比如说4个表中的人员姓名因该在同一个人员表中。。如果有的话就用视图, 没有的话可以用union,但显示的字段数目必须一样 select 姓名,年龄 from table1 union 姓名,年龄 from table2
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
用ADOQuery来实现动态查询,用ADODataSet实现对数据集的操作,用DBGrid显示数据集。
SELECT 姓名,工资 FROM employee UNION
SELECT 姓名,工资 FROM physician UNION
SELECT 姓名,工资 FROM nurse UNION
SELECT 姓名,工资 FROM technician
)A ORDER BY 姓名
没有的话可以用union,但显示的字段数目必须一样
select 姓名,年龄 from table1 union 姓名,年龄 from table2
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