Table:
ConsInfo://常量表
ConsCode(varchar(20)) ConsType(varchar(20)) ............
00 Kind
01 Kind
00 Type
01 Type
ItemInfo://项目表
ItemCode(varchar(20)) ItemName(varhcar(20))............
000 AA
001 BBItemRule://项目规则表
Order(int) ItemType ItemCode .................
1 00 000
2 00 001
3 01 000
4 01 001筛选ItemRule过后想要获得的记录的字段:
Order ItemType ItemCode ItemName
当ItemRule.ItemType = ConsInfo.ConsCode and Where ConsType='Kind' and ConsCode ='00'
向ItemName里添加的记录是通过ItemInfo表(where ItemRule.ItemCode = ItemInfo.ItemCode)条件获取,如果是其他条件ItemName字段列插入:"----".最后获取记录达到的效果是:
Order ItemType ItemCode ItemName
1 00 000 AA
2 00 001 BB
3 01 000 ---
4 01 001 ---
ConsInfo://常量表
ConsCode(varchar(20)) ConsType(varchar(20)) ............
00 Kind
01 Kind
00 Type
01 Type
ItemInfo://项目表
ItemCode(varchar(20)) ItemName(varhcar(20))............
000 AA
001 BBItemRule://项目规则表
Order(int) ItemType ItemCode .................
1 00 000
2 00 001
3 01 000
4 01 001筛选ItemRule过后想要获得的记录的字段:
Order ItemType ItemCode ItemName
当ItemRule.ItemType = ConsInfo.ConsCode and Where ConsType='Kind' and ConsCode ='00'
向ItemName里添加的记录是通过ItemInfo表(where ItemRule.ItemCode = ItemInfo.ItemCode)条件获取,如果是其他条件ItemName字段列插入:"----".最后获取记录达到的效果是:
Order ItemType ItemCode ItemName
1 00 000 AA
2 00 001 BB
3 01 000 ---
4 01 001 ---
解决方案 »
- sql 2000 的sq4 装不上为什么呢.装到输入sa密码时就提示密码不对..
- 创建表时提示maximum row size (16029) exceeds the maximum number of bytes per row (8060)!
- 在一个列上建立唯一索引是报告出现重复键(已经删除了重复数据),请问应该怎么处理
- 问个简单的问题
- Sql2005 以下如何分组
- 如何用SQL提取数据库中的数据,有分隔符的数据?[急]
- 如何根据列值增加行,开始值=1,结束值=列的最大值
- “吾皇”招标,求"商央"变法
- 请帮我看看这个分布式处理的问题???
- 【在线等,速结贴】SQL 怎样在原表将一条数据根据数量字段拆分成同等数量一条一条的数据
- 怎样在数据库中存储这样的格式
- 两个表的组合查询,请大家帮忙.谢谢.
insert ConsInfo select '00', 'Kind'
union all select '01', 'Kind'
union all select '00', 'Type'
union all select '01', 'Type'
create table ItemInfo(ItemCode varchar(20), ItemName varchar(20))
insert ItemInfo select '000', 'AA'
union all select '001', 'BB'
create table ItemRule([Order] int, ItemType varchar(20), ItemCode varchar(20))
insert ItemRule select 1, '00', '000'
union all select 2, '00', '001'
union all select 3, '01', '000'
union all select 4, '01', '001'select ItemRule.*, ItemName=isnull(tmp. ItemName, '--') from ItemRule left join
(
select ItemRule.*, ItemInfo.ItemName from ItemRule
inner join ConsInfo on ItemRule.ItemType=ConsInfo.ConsCode and ConsType='Kind' and ConsCode='00'
inner join ItemInfo on ItemRule.ItemCode=ItemInfo.ItemCode
) tmp on ItemRule.[Order]=tmp.[Order]--result
Order ItemType ItemCode ItemName
----------- -------------------- -------------------- --------------------
1 00 000 AA
2 00 001 BB
3 01 000 --
4 01 001 --(4 row(s) affected)
ItemInfo和ItemRule
这个表里面的数据以后会很多,这种方法随着数据的增加可能会慢吧?这里面还有一个特点忘记说了:ItemRule://项目规则表
Order(int) ItemType ItemCode .................
1 00 000
2 00 001
3 01 000
4 01 001
如果在规则表里的项目不能通过项目查找
ItemCode='---'
有了这些条件是否可以做些优化啊,谢谢了!
select c.* ,
(
case when exists (select 1 from ConsInfo where c.ItemType = ConsCode and ConsType='Kind' ) then b.ItemName
else '----'
end
) as ItemName
from ItemRule c ,
ItemInfo b
where
c.ItemCode = b.ItemCode
select c.* ,
(
case when exists (select 1 from ConsInfo where c.ItemType = ConsCode and ConsType='Kind' and ConsCode = '00' ) then b.ItemName
else '----'
end
) as ItemName
from ItemRule c ,
ItemInfo b
where
c.ItemCode = b.ItemCode