你为什么就不能
RecordID Time StaffID ClientID assignment
1 2004-12-12 1 1 网络维护
1 2004-12-12 2 1 网络维护
这样来提交你的数据库呢?何必搞得如此麻烦?也许我板你的问题想简单了!也许是你自己想复杂了!
RecordID Time StaffID ClientID assignment
1 2004-12-12 1 1 网络维护
1 2004-12-12 2 1 网络维护
这样来提交你的数据库呢?何必搞得如此麻烦?也许我板你的问题想简单了!也许是你自己想复杂了!
哎,都是因为mysql没有主外键。。
1、如 leyan728(乐言) 所说分开用多条记录保存
2、维持原方案,查询时用find_in_set函数,如
select * from staff,record where find_in_set(staff.StaffID,record.StaffID);
将得到
StaffID StaffName RecordID Time StaffID ClientID assignment
1 张三 1 2004-12-12 1,2 1 网络维护
2 李四 1 2004-12-12 1,2 1 网络维护
3 王五 2 2004-12-13 3 2 上门配置交换机
1 张三 3 2004-12-14 1,3 3 协助杀毒
3 王五 3 2004-12-14 1,3 3 协助杀毒 附以其他手段即可方便的满足你的要求
谢谢你的回复,我的解决方案确实不利于维护,仅仅在做复杂查询的时候就遇到了许多的问题。看来我是把问题搞复杂了,个人觉得您提出的第二种方案(查询时使用find_in_set函数)比较适合我的需求,我正在改我的代码,如有不明白的地方,还要再向大家讨教。
如果我的员工信息数据库表:staff存在超过10个员工,如
StaffID StaffName
1 张三
2 李四
3 王五
……
11 无名那么,如果我想查询ID为1的张三的工作记录时
执行
select * from staff,record where find_in_set(1,record.StaffID);
那么结果也会把 无名 的工作记录查询出来
因为find_in_set(1,record.StaffID)会把所有包含字符串为1(包括11)的记录查询出来,这该怎么办呀?我想到一个笨方法:
维修记录数据库表record的StaffID字段采用这种格式进行存储:1|2|11|
以后如果单独查询一个人的记录就执行find_in_set(1|,record.StaffID)
呵呵,不过感觉这种方法好像不太正规呀!