如何设计sql数据库,以实现商品自定义属性

如何设计sql数据库,以实现商品自定义属性,第1张

数据库没有“第几行”的概念。所以没法直接按楼主说的“第一行:自定义属性列为1;第八行为:8;第九行为1;”

比较折中的方法是通过id列来生成自定义属性列,前提是id列是自增的。

select top 50 [id],[key],id % 8+1 as 自定义属性列 from keywords Order by id desc

这里只提供实现思路:

jqgrid中的colNames,后面是一个表头列名数组,此数组可以从调用这个grid的函数参数中传进去,意味着,可以写一个数组,存一部分固定列,然后通过ajax请求去数据库中查出自定义列,放到固定列的后面。这样我们就拼装起了这个表头数组。

jqGrid中的colModel字段的长度必须和colNames一样,并且也是可变的。意味着这个也需要从参数中传过来,也需要在js中拼装这样一个对象数组。

至于自定义数据对应显示。这个在js里面的接受的属性叫jsonReader。用root来接受Action中返回的拼装Json字符串

在后台Action中,需要将固定列和对应的属性值,自定义列和对应的属性值。使用Gson,拼装成Json数据对象,然后传到前台。

经过测试:我的方法可行。不行再找我。

select Time as 日期 ,sum(Num) as 月份总和

from Warning

group by Time

order by Time asc

/*---- 不写asc结果是一样的,因为默认是asc 升序,从1,2,3号这样开始升序排序。如果倒序则 desc

特别说明:依据楼主的提问:Time里面的日期不一定是连贯的,

1: 利用 group by Time 分组----解释:我把日期列Time 进行分组 如,1月, 2月, 3月, 4月, 5月

也就是说不管1月份的数据出现几次都归为一组,所有2月的都归为一组。到这里聪明点的人就知道了,把归为一组的 Num列 相加就可以实现要求了。

2:利用求和函数 sum (Num)把分组好的列求出他们的和就行了,这里就是所有1月为一组的会自动相加 (其他组的不相加),所有2月归为一组的会自动相加。。。。。。

3:利用 order by Time asc 升序产生连贯1月,2月,3月,这样升序排序。

4:特别说明:这里如果Time 列 数据类型是 datatime 的值是精确到时分秒的话,必须截取字符串,得到年月日或者只得到月份,因为时分秒分组的话就非常多了,1月份的时分秒都参与分组会有很多的,到时候得到1月份的和就变成1月份1号8点8分06秒 这个时间的都分组再求和。

5:楼主的要求:对应日期没有数据则显示0,isnull(你的列,0) 这个函数来转换成为0 在求和。0的总和还是0。

所以最终写成

select Time as 月份 ,sum(isnull(Num,0)) as 月份总和

from Warning

group by Time

order by Time asc

6:这个要求——因为第一列是表里面原本没有的,现在必须强行列出来,说得不太明确啊。

alter table 表名 add 列名 类型和属性等 这语句是创建一个新的列。

----*/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10030967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存