access GroupConcat 的多重筛选
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了access GroupConcat 的多重筛选相关的知识,希望对你有一定的参考价值。
已建GroupConcat模块
定义表 科目 并插入数据:
编号 年级 Name Course
1 一年级 张乐 语文
2 二年级 张乐 数学
3 一年级 张乐 英语
4 二年级 张乐 历史
5 一年级 朴正南 韩语
6 一年级 朴正南 汉语
7 一年级 欧阳南 计算机
8 二年级 欧阳南 农牧
9 二年级 欧阳南 音乐
10 二年级 张乐 语文
执行结果:
年级 Name Course
一年级 张乐 语文,英语
二年级 张乐 数学,历史,语文
一年级 朴正南 韩语,汉语
一年级 欧阳南 计算机
二年级 欧阳南 农牧,音乐
需要筛选 年纪,名称 再把 Course连接起来!
sql代码要怎么写啊?
SELECT [科目].年级,[科目].name,[科目].Course, GroupConcat('[科目].Course','[科目]',' [科目].年级=' & "'" & [科目].年级& "'") AS Course
FROM [科目]
GROUP BY [科目].年纪,[科目].name,[科目].Course;
上面只筛选了年级,如何增加筛选name?
FROM 学生科目 AS A
GROUP BY A.[年级], A.[姓名]
ORDER BY 1 DESC,2;
执行结果:
这个'学生科目'哪里来的?麻烦直接用sql视图编写!我实在是大菜鸟!
试了一下
SELECT A.[年级], A.[姓名], GroupConcat('科目','A','姓名=' & "'" & 姓名 & "'" & 'AND 年级=' & "'" & 年级 & "'") AS 选择科目
FROM A
GROUP BY A.[年级], A.[姓名]
ORDER BY 1 DESC , 2;
但结果
洛谷 1776 宝物筛选 多重背包+二进制拆分
【题解】
显然是个多重背包。但直接写背包会超时。所以我们试着优化。
怎么优化?我们发现,每个物品的个数$ai$可以拆分成几个数的和,用这些数中的某几个之和可以表示出$1$到$ai$的所有整数,并且不会超过$ai$
这样我们可以把ai个相同的物品拆分成若干个互相独立的物品,然后跑01背包。
那么如何对$ai$进行拆分?拆分出来的数就是相加起来不超过$ai$的2的$i$次幂以及$ai$减去2的$i$次幂之和的结果。
例如我们可以把19拆分成$1,2,4,8,3$
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,w,f[200010]; 5 inline int read(){ 6 int f=1,k=0; char c=getchar(); 7 while(c<\'0\'||c>\'9\')c==\'-\'&&(f=-1),c=getchar(); 8 while(\'0\'<=c&&c<=\'9\')k=k*10+c-\'0\',c=getchar(); 9 return k*f; 10 } 11 int main(){ 12 n=read(); w=read(); 13 while(n--){ 14 int vi=read(),wi=read(),ai=read(),i; 15 for(i=0;((1<<(i+1))-1)<=ai;i++){ 16 for(int j=w;j>=(wi<<i);j--) 17 f[j]=max(f[j-(wi<<i)]+(vi<<i),f[j]); 18 } 19 int tmp=ai-(1<<i)+1; 20 vi=vi*tmp; wi=wi*tmp; 21 for(int j=w;j>=wi;j--) f[j]=max(f[j-wi]+vi,f[j]); 22 } 23 printf("%d\\n",f[w]); 24 return 0; 25 }
以上是关于access GroupConcat 的多重筛选的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库