一个关于某字段的like复合查询问题请教!
我有两个表
Sub表如下:
subid(char) isset(char)
101 1
102 0
102-101 1
102-102 0
102-102-101 1
102-102-102 1
说明:
其中subid中为"*1-*2"即表明它是subid为"*1"的子科目,如102-102-101即为102-102的子科目,而102-102又为102的子科目;isset为0,说明此科目存在子科目,isset为1说明其为底层科目,即不存在其子科目,如101,102-101,102-102-101,102-102-102。当然,命名可以为*-*的其他符号,比如"科目-002",但"-"符号必定是子科目必备的特征。
Daily表如下:
subid(char) numA(num)
101 1
102 2
102-101 3
102-102 4
101 5
102-102-101 6
102-101 7
102-102-101 8
说明:此subid是sub表中subid外键,可以不唯一。
现需要对此表做如下统计:
对于任一subid A,若其对应sub表中isset字段为1(即为底层科目),直接累加Daily表中subid=A的所有记录字段numA之和sum(numA);若其对应sub表中siset字段为0,则累加Daily表中subid=A和subid=A-*的所有记录字段numA之和sum(numA)。
如上表记录统计应得到如下结果:
subid numA isset
101 1+5=6 1
102 2+3+4+6+7+8=30 0
102-101 3+7=10 1
102-102 4+6+8=18 0
102-102-101 6+8=14 1
请问该如何设计这个select语句?注意取subid=A-*时,必须确定是A-*,不是*A-*,即A在字段的最左方,这也是唯一确定父科目的关键。比如"102-101-102-21"就不是"101-102"的子科目,尽管它的subid有这几个字符。
我想了一天都找不到头绪,请大家帮忙设计一下这个select语句啊。若一个select语句不好完成,写成视图也行。