作者blu1121 (Big Brain)
看板PHP
标题[请益] update一问
时间Mon May 14 14:36:31 2012
小弟目前为公司写个简易程式,database中有二个table,
orders是订单的table,customers是客户的table,如下图:
customer栏位 orders栏位
----------- -----------
|-cID | |-oID |
|-apply | |-apply |
|-... | |-cID |
| | |-... |
----------- -----------
假设目前customers中apply(申请者)有高雄与台南 两笔客户,cID分别是高雄1、台南2
但现在发现有个bug..
若在前端网页上修改"高雄"客户的订单,将原本的apply:高雄更改为apply:台南,但
资料库的orders table中的cID还是1,应该要2才正确。
想请问orders table中的cID我该如何下SQL指令,让它如果有更改apply(申请者)时也
更新对应的cid呢? 感恩!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.202.49
1F:推 heartinside:所以customer的cid是可以重复的? 05/14 14:41
2F:→ heartinside:如果不重复的话...何不直接在orders上修改cid就好? 05/14 14:42
3F:→ heartinside:然後...如果没有特殊考量的话.. 05/14 14:44
4F:→ heartinside:资料表可以做一下正规化... 05/14 14:44
5F:→ blu1121:我有考虑过直接修改orders的cid,不过有个问题是..使用者 05/14 14:46
6F:→ blu1121:也就是客户他不知道自己的cid 05/14 14:46
7F:→ blu1121:p.s cID不能重复 05/14 14:47
8F:推 heartinside:所以客户可以把自己的订单修改给别人?!@@" 05/14 14:48
9F:→ heartinside:老实说我不是很了解问题的核心到底在哪Orz 05/14 14:49
10F:→ heartinside:请原谅我的驽钝T_T 05/14 14:49
11F:→ blu1121:不好意思我说错了,使用者是指订单管理员 05/14 14:49
12F:推 heartinside:所以管理员可以把自己管理的订单修改给其他管理员? 05/14 14:52
13F:→ blu1121:管理员可以修改订单,上面的问题点是在如果当订单的申请者 05/14 14:55
14F:→ blu1121:(apply)在新增订单时key错时可以经过修改再改回 05/14 14:56
15F:→ blu1121:不过碰到一个问题是,当更新apply(申请者)时原本的cid还是 05/14 14:57
16F:→ blu1121:原本当初新增订单时的cid,我想在修改确认後更新相对应cid 05/14 14:58
17F:推 heartinside:所以每一个cid就代表一个客户对吧? 05/14 15:00
18F:→ blu1121:是的 :) 05/14 15:00
19F:→ heartinside:我是指customer里面的cid~另外orders的cid以及aplly 05/14 15:00
20F:→ heartinside:应该是和customer对应的没错吧? 05/14 15:01
21F:→ blu1121:恩~没错!! customers中的cID, apply同orders 05/14 15:02
22F:→ blu1121:只是orders中还有些栏位,因省略没全部PO出 05/14 15:03
23F:推 heartinside:所以照理说一个客户只有一个cid对吧? 05/14 15:07
24F:→ heartinside:所以要修改apply其实就是要把订单修改给另外一个客户? 05/14 15:07
25F:→ heartinside:那就绕回来了QQ..直接改orders的cid就可以了吧? 05/14 15:08
26F:→ blu1121:我有想过多弄一个网页表单栏位,让管理员直接输入cID 05/14 15:10
27F:→ blu1121:不过当customers中apply(申请者)一多时,变得很麻烦 05/14 15:10
28F:→ blu1121:不知道您说直接改orders的cid是不是这意思^^" 05/14 15:11
29F:推 heartinside:其实cid程式这边就可以处理掉了.管理员不需要知道cid 05/14 15:11
30F:→ heartinside:直接多一个栏位~可以让管理者选这张订单是哪个客户的 05/14 15:12
31F:→ heartinside:我是指网页的表单栏位QQ" 05/14 15:13
32F:→ blu1121:小弟大概知道您的意思,我试着加入一个下拉式选单看看 05/14 15:15
33F:→ blu1121:感谢您不厌其烦的回覆:) 05/14 15:16
34F:推 heartinside:别这样说啦...一起讨论讨论~ 05/14 15:17
35F:→ heartinside:另外..下拉式算是急救用的...之後客户一多会很刺激QQ 05/14 15:23
36F:→ blu1121:我都忘记客户一多会有这问题,所以能在修改申请者後自行对 05/14 16:30
37F:→ blu1121:应才是最好解决方式@@ 05/14 16:30
38F:推 wannawanna:如果apply跟cid都表示客户 为什麽不把cid当成key就好 05/14 20:06
39F:→ blu1121:wanna大~把cID当成key?不好意思小弟有点不太明白^^" 05/15 08:10
40F:→ blu1121:p.s: cID目前是设为客户编号 05/15 08:11
41F:推 wannawanna:你可以去看看谈正规化的书 如果apply和cid都能够表示一 05/15 14:39
42F:→ wannawanna:个客户 只需把cid当成pk就好 申请者应该就是某个客户吧 05/15 14:41
43F:推 ck9472089:w大的意思应该是orders那边不需要多一个apply~有cid就好 05/15 19:42