要显示这样的数据怎么设置数据结构更趋于合理?
××盆地分层数据
组名 代号 好1井(合并)好2井(同左) 好3井 好4井 ……
(合并) (合并) 深度 厚度 深度 厚度 深度 厚度 深度 厚度 ……
×1组 c1 100 90 200 195 150 140 120 108 ……
×2组 c2 150 50 280 80 200 50 300 180 ……
×3组 c3 300 150 400 120 300 100 350 50 ……
……
盆地不同组名的个数不同,即:不同的盆地具有不同的行数,组名的顺序不能变
可以分页显示数据,如每页只显示5口井的数据,相同盆地显示的组名相同
[解决办法]
顶
[解决办法]
看不太明白。所以没法给个更好的答案
但大致上同意第3组,
数据库里只要数据全面,尽量少冗余就好了。
所谓的显示,其实只是前台实现。数据库里数据啥样子无所谓。
也可以适当的增加一个表或者字段,来存放组。。和具体的对应关系。。
我是在看不太明白。嘿~
[解决办法]
这总逻辑关系,只能自己来解决,大家只可以给你提供点方案.
LZ 加油
[解决办法]
以井为最小单元
然后分表
[解决办法]
没经验 只能帮顶
[解决办法]
不太能够理解,不过我觉得最好是分表设计。
盆地基础表;井的基础表;他们的对应表;
这样的话你说的问题就可以解决,而且没有你设计的弊端,增加一个盆地不需要增加一张表的
[解决办法]
井的序号不变只需要在井的表里面增加一个顺序字段就可以了
[解决办法]
这个应该是叫交叉表查询,
以前我的例子
Create table cost_table (日期 datetime,交费类别 char(2), 金额
numeric(10,2))
insert into cost_table select '2003-1-1 ', 'S ',23.4
union all select '2003-2-3 ', 'P ',43
union all select '2003-5-1 ', 'T ',23
go
declare @sql varchar(8000)
select @sql= 'select M as 月份 '
select @sql=@sql+ ',sum(case 交费类别 when ' ' '+交费类别+ ' ' ' then 金额 else 0
end) as [ '+ 交费类别+ '费] '
from (select distinct 交费类别 from cost_table) as a
select @sql=@sql + ' from
(select 1 as m
union all select 2
union all select 3
union all select 4
union all select 5
union all select 6
union all select 7
union all select 8
union all select 9
union all select 10
union all select 11
union all select 12
) A left join cost_table B
on A.m=month(日期)
and year(日期)=2003
group by A.M '
exec (@sql)
go
=============================================================
Create table #cost_table (日期 datetime,交费类别 char(2), 金额
numeric(10,2))
insert into #cost_table select '2003-1-1 ', 'S ',23.4
union all select '2003-2-3 ', 'P ',43
union all select '2003-5-1 ', 'T ',23
go
declare @sql varchar(8000)
select @sql= 'select month(日期) as 日份 '
select @sql=@sql+ ',sum(case 交费类别 when ' ' '+交费类别+ ' ' ' then 金额 else 0
end) as [ '+ 交费类别+ '费] '
from (select distinct 交费类别 from #cost_table) as a
select @sql=@sql + ' from #cost_table group by month(日期) '
exec (@sql)
go
drop table #cost_table
对于列数不定的,sql要动态生成了
[解决办法]
组名为一个表, 井为另外一个表, 二者建立关联.
[解决办法]
组名表(组名, 代号)
井表(组名, 深度, 厚度, 井名称)
select a.组名, a.代号, b.井名称, b.深度, b.厚度 from 组名表 a, 井表 b
where a.组名 = b.组名
[解决办法]
还不明白你所说的数据
[解决办法]
你所遇到的应该就是平常大家做报表经常遇到的交叉表的情况.
这种情况我不建议在数据库中间来处理,先把数据提取出来,然后在程序里面循环实现速度更快,
因为这个时候数据量相对来说很小.
[解决办法]
首先取出纵向的数据,然后将纵向数据变横向数据.
[解决办法]
表一:(PK:组号)
组号组名代号
1×1组c1
2×2组c2
3×3组c3
表二:(PK:井号)
井号井名
1好1井
2好2井
3好3井
4好4井
表三:(PK:组号,井号)
组号井号深度厚度
1110090
12200195
13150140
14120108
2115050
2228080
2320050
24300180
31300150
32400120
33300100
3435050
这么设计数据结构,比较清晰,前两个表就是组和井的字典表
后一个表是数据库,即使以后加组和井都不会有任何的问题