以下是引用dragonman19在2014-3-13 13:26:08的发言:
现在有两个表,A. B
表A: 序号 车间 部门 人员
1 1车间 事业1部 张三
2 2车间 事业二部 李四
表B. 序号 文凭 张三 李四
1 大学 1
2 大专 1
我的想法是通过车间和部门,得到 具体人员名称: select 人员 from A where 车间= and 部门=
然后用宏替换得到他的具体文凭: select 文凭 from B where &人员=1
但是为什么得到的是空值?
你的表B设计有问题:“张三”、“李四”等人名应该作为字段值,而不是字段名。表B应该设计成:序号,车间,人员,文凭,然后你的问题就会迎刃而解:SELECT B.人员,文凭 FROM A,B WHERE A.人员=B.人员。
但这种设计方法也是有缺陷的,如果碰到人员有重名的情况,那么就可能发生错误的连接。改进的办法是:表B也加一个车间代码,然后上述语句中的WHERE子句可以改为:A.车间+A.人员=B.车间+B.人员,不过这也不是最好的办法,可能同一车间也会有重名人员。最好的办法就是建立员工工号,因为工号在同一单位是唯一的,表A、B都设工号字段,然后用工号进行关联。上述语句中的WHERE子句可以变成“A.工号=B.工号”。
不知道我的表述你是否看懂。