开发者社区> 问答> 正文

查询以字段为列的联合表

我不太确定这是否可行,还是属于数据透视表类别,但我认为我会去找专家看。

我有三个基本表: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

展开
收起
保持可爱mmm 2019-11-15 17:27:37 412 0
1 条回答
写回答
取消 提交回答
  • 相关但值是值保存在单独的列中,并且您早就知道“特殊类型”: 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

    2019-11-15 17:27:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多