求一个sql语句,数据库是这样的。产品是一个表,记录产品的各项参数信息,组成产品的材料是另一个表。记录所有的材料信息。然后是材料与产品对应的每个产品的bom单,(bom单即生产一个产品所需的全部材料信息)。大致如下
产品表:产品id,产品名称。
材料表:材料id,材料名次。
bom表:bomid,对应产品id,对应物料id,使用数量。
现在假如我要生产3个产品a,4个产品b,5个产品c。等等。如何用一条sql语句查询出总共所需的材料及数量。
a,b,c的bom可能用到同一个材料,但使用不同的数量。
求高手解答
产品表:产品id,产品名称。
材料表:材料id,材料名次。
bom表:bomid,对应产品id,对应物料id,使用数量。
现在假如我要生产3个产品a,4个产品b,5个产品c。等等。如何用一条sql语句查询出总共所需的材料及数量。
a,b,c的bom可能用到同一个材料,但使用不同的数量。
求高手解答
解决方案 »
- 关于TO_DAYS的使用
- 求助:WIN2003重启系统后,MYSQL4.1.22启动异常
- you have an error in your sql syntax; check the manual that corresponds to your mysql server version
- 在线等,一个字符集的问题
- MYSQL嵌套查询问题
- 如何将文本格式的数据导入MYSQL数据库???
- mysql-5-alpha-nt安装后 myodbc not found 问题
- mysql远程连接要怎么添加一个什么样的用户?
- 在window下用mysql能进行数据库用户认吗??
- SQL语句如何在最后增加一行合计
- 从SQL表里获取排名,求SQL达人相助
- 求sql
FROM `产品表`
LEFT JOIN `bom表` ON `产品表`.`产品id`=`bom表`.`对应产品id`
LEFT JOIN `材料表` ON `bom表`.`对应物料id`=`材料表`.`材料id`
GROUP BY `bom表`.`对应产品id`
sum( b.使用数量 *
case p.产品名称
when '产品a' then 3
when '产品b' then 4
when '产品c' then 5
end
)
from 产品表 p, bom表 b, 材料表 m
where p.产品id=b.对应产品id and m.材料id=b.对应物料id
and p.产品名称 in ('产品a','产品b','产品c')
计划id,对应产品id,生产数量。
现在的目的是知道几个生产计划的id。如何求出所需物料。
CREATE TABLE `material_info` (
`material_id` char(16) NOT NULL,
`material_name` varchar(15) NOT NULL,
`material_type` char(16) NOT NULL,
PRIMARY KEY (`material_id`)
)
产品表:
CREATE TABLE `product_info` (
`pr_id` char(16) NOT NULL,
`pr_name` varchar(20) NOT NULL,
`pr_type` char(6) NOT NULL,
PRIMARY KEY (`pr_id`)
)
bom表:
CREATE TABLE `bom_xx_info` (
`bom_xx_id` char(16) NOT NULL,
`bom_xx_product_id` char(16) NOT NULL,
`bom_xx_mat_id` char(16) NOT NULL,
`bom_xx_num` int(10) NOT NULL,
PRIMARY KEY (`bom_xx_id`)
)
生产计划表:
CREATE TABLE `plan_info` (
`plan_id` char(16) NOT NULL,
`plan_prodcut_id` char(16) NOT NULL,
`plan_num` int(10) NOT NULL,
PRIMARY KEY (`plan_id`)
)
sum( b.使用数量 * p.生产数量 )
from 生产计划表 p, bom表 b, 材料表 m,
where p.对应产品id=b.对应产品id and m.材料id=b.对应物料id
and p.计划id in (1,2,3)