我不太确定这是否可行,还是属于数据透视表类别,但我认为我会去找专家看。
我有三个基本表:Card,Property和CardProperty。由于卡不具有相同的属性,并且通常具有相同属性的多个值,因此我决定使用联合表方法来存储数据,而不是在卡表中使用非常大的列结构。
属性表是基本的关键字/值类型表。因此,您具有关键字ATK和为其分配的值。还有一个名为SpecialType的属性,该属性卡可以具有多个值,例如“ Sycnro”和“ DARK”
我想要做的是创建一个视图或存储过程,该视图或存储过程为我提供了卡ID,卡名称以及分配给卡的所有属性关键字(作为列)以及它们在指定卡的ResultSet中的值。因此,理想情况下,我的结果集如下:
ID NAME SPECIALTYPE 1 Red Dragon Archfiend Synchro 1 Red Dragon Archfiend DARK 1 Red Dragon Archfiend Effect 这样我就可以统计结果。
我想,即使是忽悠,也可以根据关键字将属性简单地连接在一起,因此我可以生成一个ResultSet,如:
1 Red Dragon Archfiend Synchro/DARK/Effect ..但我不知道那是否可行。
问题来源于stack overflow
相关但值是值保存在单独的列中,并且您早就知道“特殊类型”: SQL查询以按月比较产品销售额
否则,我将在存储过程中使用游标执行此操作,或者在业务或表示层中执行转换。
如果您知道所有情况,请在sql上试一下:
Select ID,NAME ,Synchro+DARK+Effect -- add a some substring logic to trim any trailing /'s from (select ID ,NAME --may need to replace max() with min(). ,MAX(CASE SPECIALTYPE WHEN "Synchro" THEN SPECIALTYPE +"/" ELSE "" END) Synchro ,MAX(CASE SPECIALTYPE WHEN "DARK" THEN SPECIALTYPE +"/" ELSE "" END) DARK ,MAX(CASE SPECIALTYPE WHEN "Effect" THEN SPECIALTYPE ELSE "" END) Effect from table group by ID ,NAME) sub1
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。