问个SQL写法

lunat 2010-05-20 05:18:27
有一张表记录配件价格 products(id,price)

现在我有个字符串表示的配件包 比如 "5,2,3,4,4,5,6,8,8,6",其中的每个数字对应products中的id(产品编号)
现在 我想计算整个配件包的价格 怎么写sql语句?

access2000 谢谢

ps:刚发的帖子怎么就没了 晕死……
...全文
95 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-05-20
  • 打赏
  • 举报
回复
BOM 的设计,通常的做法是

物料表(物料编号,品名,价格,单位,。。。。)
BOM(物料编号,材料编号,数量)

lunat 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acmain_chm 的回复:]

主要的问题是这种设计并不符合数据库设计的基本准则。所以导致这种情况。目前最方便的做法就是写个函数来处理。
[/Quote]

其实是这样的 有两个表
表1: products
----------------------
id 整数 自动增长
price 浮点
……

表2: packets
------------------------
id 自动增长
prods 字符串
……

其中prods的值就是我上面所说的字符串
这样设计如果有问题的话,那么怎么在数据库中存储每个配件包所包含的配件列表呢?
(不同的 配件包 可能含有同一种配件,同一个 配件包 可能含有多个相同或者不同的配件)

之所以不在packets添加记录的时候保存总价格,是因为有时候配件价格会发生变化,因此需要随时计算配件包的价格
ACMAIN_CHM 2010-05-20
  • 打赏
  • 举报
回复
主要的问题是这种设计并不符合数据库设计的基本准则。所以导致这种情况。目前最方便的做法就是写个函数来处理。
lunat 2010-05-20
  • 打赏
  • 举报
回复
或者有没有好的方法来表示一个配件包,来方便计算总价格?
lunat 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]
用SQL比较复杂,并需要建一个辅助表。

建议用程序来实现。
[/Quote]

要是实在没有简单的sql语句实现这个功能,那也只好用程序实现了……
lunat 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwa 的回复:]
select sum(price) from (
select distinct price from tt where instr('5,2,3,4,4,5,6,8,8,6',id)>0) a
[/Quote]
…… 这样不行吧?distinct:价格不同…… 跟我的要求完全无关啊……
WWWWA 2010-05-20
  • 打赏
  • 举报
回复
select sum(price) from (
select distinct price from tt where instr('5,2,3,4,4,5,6,8,8,6',id)>0) a
ACMAIN_CHM 2010-05-20
  • 打赏
  • 举报
回复
用SQL比较复杂,并需要建一个辅助表。

建议用程序来实现。
lunat 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwa 的回复:]
select sum(price) from tt where instr('5,2,3,4,4,5,6,8,8,6',id)>0
[/Quote]

重复的配件不能只计算一次……
WWWWA 2010-05-20
  • 打赏
  • 举报
回复
select sum(price) from tt where instr('5,2,3,4,4,5,6,8,8,6',id)>0

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧