求一SQL语句

[复制链接]
查看11 | 回复9 | 2005-7-20 09:30:28 | 显示全部楼层 |阅读模式
生产一批背包,黑色,棕色,米色各500个,它们用到的材料是一样的,只是颜色不一样而已,比如说,生产这三种颜色的包都要用到塔丝龙,规格是一样的,只是颜色不一样,黑色的包用的是黑色的塔丝龙,棕色的背包用是棕色的塔丝龙,米色用的是米色的塔丝龙,我专门用了一个字段type来标识,当type=1是各种颜色包专用的材料,当type=0是各种颜色包用到的一样的材料。我想实现的是主表中输入这次要生产的包的信息(包是一样,只是颜色不一样,颜色有可能一种,也可能两种,也可能三种,我自己限定三种,也就是最多三种,超过三种要分两张单子打,一般生产不会超过六种颜色),从表中输入生产要到的材料,不管是共用的还是专用我都在从表中只存在一条记录,用type来标识就行了。
生产主表:
scno
name num1color1 num2 color2num3 color 3
sc200307270001 背包 500 黑色 500棕色500米色
从表:
scno
name type
sc200307270001 塔丝龙
1
sc200307270001 黑色织边0
sc200307250001 么贴术
0
有没有办法用sql实现从上面两个表得到下面的表
scno
namenum color
sc200307270001 塔丝龙500 黑色
sc200307270001 塔丝龙500 棕色
sc200307270001 塔丝龙500 米色
sc200307270001 黑色织边1500
sc200307250001 么贴术1500
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
看不懂诶
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
创建视图v1,查询语句如下:
SELECT scno, name, num1, color1
FROM table1
UNION
SELECT scno, name, num2, color2
FROM table1
UNION
SELECT scno, name, num3, color3
FROM table1
视图的结果为:

sc200307270001
背包
500
黑色

sc200307270001
背包
500
米色

sc200307270001
背包
500
棕色
接下来应该没有问题了吧。:)
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
呵呵,表没设计好
想实现你的功能一条语句难啊。
我想了10分钟,做不出来。
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
大家能不能说一下主表怎么设计比较好
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
我在上面提到的方法不可以吗?建一个视图过渡一下,就可以得到你要的结果了。
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
楼上的大虾,好人做到底,接下来的SQL语句用哪个,提示一下,我这三天都急疯了。
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
客户要求是不管输入是通用的还是专用的材料,都只输入一次。而生成采购单要是实际用到的材料
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
看看下面的SQL语句吧,虽然复杂,可是能解决问题。不过,“么贴术”是什么东西呀,它的scno与第一个表table1匹配不上,为什么也会出现在结果里呀。我的这个是不包含它的,如果有它还要在改动一下。
SELECT t1.scno, t2.name, t1.num1, t1.color1
FROM table2 t2, table1 t1
WHERE t2.scno = t2.scno AND t2.Type = 1
UNION
SELECT t1.scno, t2.name, t1.num2, t1.color2
FROM table2 t2, table1 t1
WHERE t2.scno = t1.scno AND t2.Type = 1
UNION
SELECT t1.scno, t2.name, t1.num3, t1.color3
FROM table2 t2, table1 t1
WHERE t2.scno = t1.scno AND t2.Type = 1
UNION
SELECT t1.scno, t2.name, t1.num1 + t1.num2 + t1.num3, ''
FROM table2 t2, table1 t1
WHERE t2.scno = t1.scno AND t2.Type = 0
回复

使用道具 举报

千问 | 2005-7-20 09:30:28 | 显示全部楼层
使用 UNION 组合查询的结果集的两个基本规则是:
1所有查询中的列数和列的顺序必须相同。
2数据类型必须兼容。
select里的列数不一样能匹配吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行