问题有两表
商品规格表一:
商品ID 商品组合ID 单位 转换率 商品名称
1 1 瓶 1 王老吉
2 2 箱 1 铅笔
3 2 盒 10 铅笔
4 2 支 80 铅笔
库存数量表二:
商品ID 数量
1 20(瓶)
4 400(支)
库存表中存在的是 商品中的最小单位数量 我现在想得到数据如下
:
王老吉 20 瓶
铅笔 5 箱
铅笔 40 盒
铅笔 400 支
商品规格表一:
商品ID 商品组合ID 单位 转换率 商品名称
1 1 瓶 1 王老吉
2 2 箱 1 铅笔
3 2 盒 10 铅笔
4 2 支 80 铅笔
库存数量表二:
商品ID 数量
1 20(瓶)
4 400(支)
库存表中存在的是 商品中的最小单位数量 我现在想得到数据如下
:
王老吉 20 瓶
铅笔 5 箱
铅笔 40 盒
铅笔 400 支
解决方案 »
- 高手谁能帮忙 简化下SQL语句啊
- 为何我删除了SQL数据库中的很多记录,但是为什么数据库没有明显变小呢?
- ●●●●●分组查询用SUM统计,怎样再根据SUM过滤?急●●●●●
- 寻找广州的SQL高手,有几个复杂视图要写,谢谢
- 面向公众的Web系统中权限管理应该放在SP里还是放在数据库外的程序里?
- downfile("网址,d:\photo\变量名\"),这个如何由变量生成目录?(mysql语法)
- SQL in批量添加
- 我就想在oracle中写句select 看看效果,下一步如何做,
- sqlserver中select用法
- 触发器急救!!!大虾们帮帮忙,高潮中。。。。
- 关于时间的问题(sqlserver)
- sqlserver2008有没有什么方法把 当天慢的sql记录下来。
把你的转换率全部写成于商品的最小单位的转换率:
商品ID 商品组合ID 单位 转换率 商品名称
1 1 瓶 1 王老吉
2 2 箱 80 铅笔
3 2 盒 10 铅笔
4 2 支 1 铅笔
商品规格表一:
商品ID 商品组合ID 单位 转换率 商品名称
1 1 瓶 1 王老吉
2 2 箱 1 铅笔
3 2 盒 10 铅笔
4 2 支 80 铅笔
库存数量表二:
商品ID 数量
1 20(瓶)
4 400(支)但是也有规律可寻 库存表400支 =5箱 =40盒 =400支
IF OBJECT_ID('[ta]') IS NOT NULL
DROP TABLE [ta]
GO
CREATE TABLE [ta] ([商品ID] [int],[商品组合ID] [int],[单位] [nvarchar](10),[转换率] [int],[商品名称] [nvarchar](10))
INSERT INTO [ta]
SELECT '1','1','瓶','1','王老吉' UNION ALL
SELECT '2','2','支','1','铅笔' UNION ALL
SELECT '3','2','盒','10','铅笔' UNION ALL
SELECT '4','2','箱','80','铅笔'--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([商品ID] [int],[数量] [int],单位 [nvarchar](10))
INSERT INTO [tb]
SELECT '1','20','瓶' UNION ALL
SELECT '4','400','支'--SELECT * FROM [ta]
--SELECT * FROM [tb]-->SQL查询如下:
SELECT a.[商品名称],数量=b.数量/c.转换率,c.单位
FROM ta a
JOIN tb b
ON a.商品ID=b.商品ID
JOIN ta c
ON a.[商品组合ID]=c.[商品组合ID]
/*
商品名称 数量 单位
---------- ----------- ----------
王老吉 20 瓶
铅笔 400 支
铅笔 40 盒
铅笔 5 箱(4 行受影响)
*/楼主改一下A表的设计更好处理