昨天看了一个朋友的面试题,大家也来看看(200分)

  • 主题发起人 主题发起人 jericho3164
  • 开始时间 开始时间
J

jericho3164

Unregistered / Unconfirmed
GUEST, unregistred user!
Table1中保存了员工编号(Y_ID)和员工身份证(Y_NO)
Table2中保存了员工编号(Y_ID)和员工工资(Y_SALARY)
但是员工Y_ID可能重复,Y_NO是唯一的,那么怎么根据Y_NO来往Table2里批量写入员工工资数据(金额可随机1000-2000内)?要求不

能修改表结构,重复的Y_ID不能重复写入工资数据。

表如下:
Table1:

Y_ID (VarChar(50)) Y_NO(VarChar(20))
1011 51050219880414017
1012 51051219680513026
1015 52152219790464014
1011 51051319580713033
1011 53251319730425016
1012 51251519820707013
…… ……




Table2写入结果要求如下:
Y_ID (VarChar(50)) Y_SALARY(int(8))
1011 1245
1012 1658
1015 1023
1011 1547
1011 1236
1012 1745
…… ……
 
1,先给所有员工,随机生成工资数(1000+random(999)),将数据保存到表中
2,处理重复部分,有两个办法可以做,a,取出Y_ID,Y_SALARY相同的记录,利用循环,逐个修改,这个应注意新数据和旧数据不能重复;b,取出Y_ID,Y_SALARY相同的记录,再次取随机数修改现有工资,然后再取重复部分,再修改,直到无重复部分
 
qry1:=select * from Table1 order by Y_ID
qry2:=select * from Table2 order by Y_ID
while (not qry1.Eof)And(not qry2.eof) do
begin
if qry1[Y_ID]=qry2[Y_ID] then
begin
insert into table2 工资
qry1.next;
qry2.next;
end
else
begin
if qry1[Y_ID]<qry2[Y_ID] then
qry1.next
else
qry2.next;
end;
end;
 
实际上table1中Y_NO是无意义的,random函数根据不同数据库修改
insert into table2
select Y_ID, random()
from table1
 
出这种题的人有毛病吧!
 
insert into table2
select Y_ID, random()
from table1 group by Y_ID
 
谁设计的这数据库???在实际开发中可能很少有人用吧
同意楼上
 
不清不楚,不明不白!
 
这种数据库也能用?建议你不要到这种公司去,肯定不怎么样.
 
现在公司应聘净出这种白痴题目,我碰到公司出这样的题目理都不会理他们的,能力不是在这种地方体现的,是他们的能力有问题。
 
员工ID一定要唯一的!没遇见过这样设计的!
 
设计这样的数据库的人,肯定是有问题,在一个公司如果工号重复了支出现什么样的结果?
 
猪啊, 这个题目的出题人要么有病, 要么就是故意设计的陷阱, 不是需要你的答案, 是要你否定这个题目的方案
 
脑子养金鱼了啊~~还波涛澎湃的 翻着浪花~~
 
我感觉这两个表根本无关,因为想同的并非关键字,只要对Table2中的每条记录都插进工资就可以了
 
唯一的答案:题目不合理。
 
那是测你对数据库的熟悉度和算法呢
实际工作中比这个更离谱,更复杂的事还多着呢
 
高难度问题
 
出题人走火入魔了。员工编号不唯一[:D]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
700
import
I
I
回复
0
查看
860
import
I
S
回复
0
查看
952
SUNSTONE的Delphi笔记
S
后退
顶部