日期:2014-05-17  浏览次数:20699 次

求指教啊!
本帖最后由 jzm515 于 2013-03-24 12:30:29 编辑
--部门表(部门ID,部门名称)
CREATE TABLE Sector(cid int,cname varchar(10))
INSERT INTO Sector VALUES (1, '开发部'); 
INSERT INTO Sector VALUES (2, '行政部'); 

--招聘职位表(职位ID,职位名称)
CREATE TABLE Jobs(tid int,tname varchar(10))
INSERT INTO Jobs VALUES (1, '程序员'); 
INSERT INTO Jobs VALUES (2, '开发部经理');
INSERT INTO Jobs VALUES (3, '行政专员');

--职位上限表(职位上限ID,部门ID,职位ID,人数上限,工资上限)
CREATE TABLE upperLimit (ulid int ,cid int,tid int, maxNum int, Wages int ); 
INSERT INTO upperLimit VALUES (1,1,1,2,6000); 
INSERT INTO upperLimit VALUES (2,1,2,1,10000);
INSERT INTO upperLimit VALUES (3,2,3,1,3000);

问题1:
通过查询开发部的时候,得取该部门要招聘的职位,然后分别上限是多少,怎么实现?

结果:
  cid   cname   tname   tmaxNum   tWages    ttname     ttmaxNum   ttWages
   1    开发部  程序员     2       6000   开发部经理       1       10000

注意:结果可根据招聘职位表的变化而改变,如果去掉开发部经理,那其结果是

  cid   cname   tname   tmaxNum   tWages    
   1    开发部  程序员     2       6000  

------解决方案--------------------
第一个结果不应该是个列表吗?  tname和ttname列在一row里是什么意思?
------解决方案--------------------
数据库只管把数据查出来,怎么显示程序解决
select a.cid,b.cname,c.tname,a.tmaxNum,a.tWages    
from upperLimit a inner join Sector b on a.cid = b.cid
inner join Jobs c on a.ulid = c.tid
where b.cid = 1


------解决方案--------------------
引用:
数据库只管把数据查出来,怎么显示程序解决
select a.cid,b.cname,c.tname,a.tmaxNum,a.tWages    
from upperLimit a inner join Sector b on a.cid = b.cid
inner join Jobs c on a.ulid = c.tid
where b.cid = 1

……
+1
------解决方案--------------------

select a.cid,a.cname,b.tname,c.maxnum,c.wages
from sector a, jobs b,upperlimit c
where a.cid = c.cid 
and b.tid = c.tid
and a.cname = '开发部'

/*
cid         cname      tname      maxnum      wages
----------- ---------- ---------- ----------- -----------
1           开发部        程序员        2           6000