Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

3个关联表,限定条件更新

宋冠平  发表于:2014-08-20 11:26:32  
复制

有三个关联表:主表1、主表2、子表3,通过字段ID连接

主表1与主表2的关系是1对1,ID是关键字

字表3与主表1、2是多对1,ID不是关键字

我现在想更新主表2中的一个字段a(数字型),条件是主表1的字段b(数字型)<=子表3中当字段d(文本型)满足“条件1“时的字段c(数字型)

因为子表3中的ID=主表1、2的ID时有多条记录,只能选择满足条件的一个值来比较。

请教一下这个查询该怎么设计,或者sql代码要怎么写?

 

Top
竹笛 发表于:2014-08-20 11:28:53
上传你的示例,并结合示例阐述问题有助于解决。

宋冠平 发表于:2014-08-20 11:44:08

点击下载


需要更新的是加工明细表中的[铣长]字段到0

条件是订单明细表中的[数量]<=当任务完工表中的[完工工序]=”铣长“时的[完工件数]




煮江品茶 发表于:2014-08-20 17:34:36

两个主表一对一,子表何需皆连起?

子表欲读主表二,只需连上主表一。

主表一有两子表,子表之间可相依。

数据保存在一处,不必多处做存取。

只需删除计算列,更新问题便多余。

记住天下本无事,切莫脱裤再放屁。




宋冠平 发表于:2014-08-21 10:06:19

这个诗是蛮有意思的,楼上的文采不错啊

两个主表一对一,子表何需皆连起?===我只连了一个

数据保存在一处,不必多处做存取。===订单表和加工表分别用于不同的部门,且订单表的记录>加工表的记录(有的订单不需要加工,但是1对1)

只需删除计算列,更新问题便多余。===我的表中没有计算列,我自己再弄了半天发现是聚合函数的问题(是这么叫的吧,我是业余的,不懂专业名词)

                                                ===后来用生成表解决了



煮江品茶 发表于:2014-08-21 11:26:49
其诗的含义是:删除子表与主表二的链接,删除主表2的a字段。

宋冠平 发表于:2014-08-21 11:57:43

主表2的a字段是我要用的字段啊?删了怎么用?

要更改表格结构么?

对了,我忘记了。还要将当子表中的字段【完工工序】为“铣长“是的字段【完工件数】求和后才比较



煮江品茶 发表于:2014-08-21 16:34:50

既然a字段取一定条件下的c字段,那么a字段就是计算列,既然能根据其他字段计算得到就无必要保存在数据表中。需要时通过sql查询得到即可。这样做也就不存在数据同步的问题了,没有数据同步问题,你也就不必考虑怎么解决同步问题。

在程序开发中(也包括解决各类其他问题时),我们不是制造问题,再去解决问题。而是应该首先考虑消除问题,问题本身不存在了,也就无需解决它们了。这就是诗词中最后一句的含义所在。



宋冠平 发表于:2014-08-22 10:12:37

我把三个表上传。你如果有空帮我看下有哪些设计不合理的。

纯属自学,莫见笑!



宋冠平 发表于:2014-08-22 10:13:39
总记录:9篇  页次:1/1 9 1 :