visual foxpro查询语句,看不太懂!?

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:45:20
1.找出工资多于1230元的职工号和他们所在的城市
select 职工号,城市 from 职工,仓库;
where (工资>1230)and (职工.仓库号=仓库.仓库号).........我不明白为什么最后要加(职工.仓库号=仓库.仓库号)看不太懂?

2.查询所有职工的工资都多于1210元的仓库的信息
select* from 仓库 where 仓库号 not in ;
(select 仓库号 from 职工 where 工资<=1210)
这里加not in 是什么意思,为什么要加呢?

1.
职工号、仓库号 在 职工表 里
如果,工资大于1230的职工号有 E1 E2 E3
他们所在的仓库的仓库号为 WH1 WH2 WH2

城市 、仓库号 在 仓库表 里
如:工资大于1230的人所在的城市为 北京 上海 北京
对应仓库号为 WH1 WH2 WH3
很明显,
输出的第一条应为
E1 北京 (注意他们仓库号是相同的,意思是北京的仓库WH1里有E1这个职工工资是大于1230的)
同理,第二条应为
E2 上海
而E3不会和WH3的一起,它也应该和WH2的联系起来,所以E3所在的城市也是上海
E3 上海
————
* 如果没有(职工.仓库号=仓库.仓库号),那么职工号和城市分别在各自的表里就无法连接起来了,正是因为他们两个表里都有 仓库号 才能让两个表连接起来!
——————————————————————————————————
2.这个问题和第一个是一个道理哈~
先分析一下:
第一排的意思是:在 仓库表 里找出 所有 的信息,条件是 仓库号要满足X条件
再看题目,要求的是 工资多于1210的人才可以
但是在第一排中提都没有提到 工资
为什么?
因为 仓库表 里是没有 工资 这个字段名的
要找到 工资 这个字段名,很明显应该联想到 职工表
职工表里有工资
要把 工资 和 仓库表 联系起来
我们就想到了 两个表里都含有 仓库号
*所以 仓库号 又起到了连接两个表的关系!
OK
这句话的意思就是
找出 职工表 里工资小于等于1210的 仓库号
找出 仓库号 不满足(not in)工资小于等于1210的 条件的所有信息 !
————————————————————————————————
希望你能看懂,呵呵~

职工.仓库号=仓库.仓库号
是为了把职工的仓库