您的位置:程序门 -> ms-sql server -> 应用实例



sql高手,考考你的复合查询水平?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


sql高手,考考你的复合查询水平?
发表于:2007-10-31 22:07:38 楼主
表:
if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[sysclass]')   and   objectproperty(id,   n'isusertable')   =   1)
drop   table   [dbo].[sysclass]
go

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[product]')   and   objectproperty(id,   n'isusertable')   =   1)
drop   table   [dbo].[product]
go

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[sysclassattribute]')   and   objectproperty(id,   n'isusertable')   =   1)
drop   table   [dbo].[sysclassattribute]
go

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[sysclassattributevalue]')   and   objectproperty(id,   n'isusertable')   =   1)
drop   table   [dbo].[sysclassattributevalue]
go

create   table   [dbo].[sysclass]   (
/*这个表是系统产品分类*/
[id]   [int]   not   null   ,
[classname]   [nvarchar]   (100)   collate   chinese_prc_ci_as   null   ,
)   on   [primary]
go

create   table   [dbo].[product]   (
/*这个表是存储产品*/
[id]   [int]   identity   (1,   1)   not   null   ,
[productname]   [nvarchar]   (100)   collate   chinese_prc_ci_as   null   ,
[sysclassid]   [int]   null   ,    
)   on   [primary]
go

create   table   [dbo].[sysclassattribute]   (
/*这个表是存储产品的附加属性的项目*/
[id]   [int]   not   null   ,
[en_attributename]   [nvarchar]   (100)   collate   chinese_prc_ci_as   null   ,
[gb_attributename1]   [nvarchar]   (100)   collate   chinese_prc_ci_as   null   ,
[sysclassid]   [int]   null  
)   on   [primary]
go

create   table   [dbo].[sysclassattributevalue]   (
/*这个表是存储产品的附加属性的值*/
[id]   [int]   null   ,
[productid]   [int]   null   ,
[sysclassattributeid]   [int]   null   ,
[sysclassattributestr]   [nvarchar]   (50)   collate   chinese_prc_ci_as   null  
)   on   [primary]
go

案例:

1.产品:花朵童装       (product表里一条记录)
分类:服装> > 童装       (sysclass表里一条记录)
价格:95元
童装下面还有分类属性:面料,size,季节   (sysclassattribute表里面三条记录)
产品:花朵童装   的三个属性的值是:面料=20%棉   50%毛;size=xx;季节=冬;   (sysclassattributevalue表里面三条记录)

2.产品:红孩子童装     (product表里一条记录)
分类:服装> > 童装         (sysclass表里一条记录)
价格:50元
童装下面还有分类属性:面料,size,季节       (sysclassattribute表里面三条记录)
产品:红孩子童装   的三个属性的值是:面料=20%棉   75%毛;size=;季节=冬;   (sysclassattributevalue表里面两条记录)


用户查询对比的结果是:

产品名               分类       价格                                 面料                               size                 季节

花朵童装           童装       95元                               20%棉   50%毛                 xx                     冬

红孩子童装       童装       50元                               20%棉   75%毛                                             冬


如果用最优化的查询得到用户需要的查询结果!
发表于:2007-11-01 09:15:451楼 得分:0
没有高手能解决这个问题吗?
发表于:2007-11-01 09:35:572楼 得分:0
案例:  

3.产品:红旗电机               (product表里一条记录)  
分类:五金机电> > 电机               (sysclass表里一条记录)  
价格:150元  
童装下面还有分类属性:转速,启动方式,线圈电阻率,电功率,输入电压       (sysclassattribute表里面五条记录)  
产品:红旗电机的五个属性的值是:转速=500;启动方式=直流;线圈电阻率=50;电功率=600w;输入电压=60v;       (sysclassattributevalue表里面五条记录)  

3.产品:抽水电机               (product表里一条记录)  
分类:五金机电> > 电机               (sysclass表里一条记录)  
价格:120元  
童装下面还有分类属性:转速,启动方式,线圈电阻率,电功率,输入电压       (sysclassattribute表里面五条记录)  
产品:红旗电机的五个属性的值是:转速=550;启动方式=直流;线圈电阻率=;电功率=w;输入电压=80v;       (sysclassattributevalue表里面五条记录)  


用户查询对比的结果是:  

产品名               分类               价格                   转速         启动方式             线圈电阻率                     电功率         输入电压  

红旗电机           电机               150元                 500         直流                           50                           600w               60v

抽水电机           电机               120元                 550         直流                                                                                       80v

遵循的规则是:当用户选择同一分类下的商品时,就调用该类商品的附加属性并可以直接进行对比排列!


快速检索

最新资讯
热门点击